継承という言葉を聞いたことはありますか?
Javaを勉強し始めてしばらくたつと見かけるようになる言葉です。
初めて見た時は何を継承するのだろうと悩んだものです。
今回はそんな継承について、まだ知らないという方や聞いたことはあるけど詳しくは知らないというような方に向けて解説していきます。
継承とは?
そもそも継承とはどんな機能なのでしょうか?
定義としては継承はオブジェクト指向部プログラミングであるJavaなどが持つ機能で、変数やメソッドといったものを他のクラスに引き継ぐことができるというものです。
もう少し簡単に言うと一度作ったクラスと似たクラスを再度作ることを可能にする機能です。
ただし全く同じクラスを作るのではなく、継承元のクラス+αの機能を搭載したクラスを作る感じです。
そして大本のクラスを親クラス、継承したクラスを子クラスと言います。
ではこの継承ですが、どのように使用するのかというと下記のように子クラスを作成する際にextendsの右側に親クラスのクラス名を記載するだけです。
public class 子クラス extends 親クラス{}
実際のコードを記載すると下記のようになります。
【コード】
public class ParentClass {
public void parent() {
System.out.println("親クラスのメソッド");
}
}
public class ChildClass extends ParentClass{
public void child() {
System.out.println("子クラスのメソッド");
}
public static void main(String[] args) {
System.out.println("1.まずは親クラスから実行↓");
ParentClass pc=new ParentClass();
pc.parent();
System.out.println("2.次は子クラスを実行↓");
ChildClass cc=new ChildClass();
cc.parent();
cc.child();
}
}
【実行結果】
1.まずは親クラスから実行↓
親クラスのメソッド
2.次は子クラスを実行↓
親クラスのメソッド
子クラスのメソッド
上記コードは親クラスであるParentClassとそれを継承した子クラスであるChildClassがあります。
そして子クラスのmainメソッドではParentClassとChildClassをそれぞれインスタンス化しています。
因みにインスタンス化についてわからない方は下記記事を読んでみてください。
【Java】インスタンスとは何なのか? | エンジニアKISARAGIの備忘録 (kisaragi-it.com)
ParentClassでインスタンス化した方は、もちろんparentメソッドにアクセスできます。
そしてChildClassの方は見ていただいたら分かる通り、parentメソッドとchildメソッドにアクセスできていることが分かります。
このことからChildClassにParentClassのメソッドが引き継がれていることが分かるかと思います。
継承するメリット
では継承のメリットについて次は解説していきます。
継承するメリットは主に2点あります。
- コードの修正が楽になる
- とても見やすいコードが書ける
コードの修正が楽になる
まずコードの修正が楽になるという点ですが、例えば継承をせずに同じような機能を持ったクラスを2つ作成したとします。
そして両クラスに共通する項目が変更になった場合、2クラスともに変更する必要が出てきます。
1度だけの変更なら楽ですが、何度も変更するとなると大変ですし、2クラス程度なら変更は楽そうですが、100クラスの変更が必要などとなった日には発狂してしまいます。
しかしクラスの継承をすると、こういった苦労は必要なく親クラスを変更するだけで事足りるという結果になります。
とても見やすいコードが書ける
2つ目はとても見やすいコードが書けるというものです。
たくさん同じような内容のクラスを作成していると、どのコードがどういった機能を表しているのかぱっと見では分かりません。
クラスの継承をしていると、その機能に付随した機能なのだと一発で分かります。
このようなメリットが継承にはあります。
継承の注意点
では最後に継承についての注意点について解説しておきます。
注意点は下記2つです。
- 2つのクラスからは継承できない
- コンストラクタの継承はされない
2つのクラスからは継承できない
1つ目は2つのクラスからは継承することができないというものです。
クラスの継承は基本的に1つのクラスのみからしかできません。
ただし一度継承した子クラスを継承することは可能です。
つまり親クラス-子クラス-孫クラスという感じです。
コンストラクタの継承はされない
2つ目はコンストラクタの継承はされないというものです。
コンストラクタについてわからないという方は下記記事で詳しく解説していますので一度読んでみてください。
【Java】コンストラクタとは? | エンジニアKISARAGIの備忘録 (kisaragi-it.com)
一応簡単に解説しておくとクラスをインスタンス化した際に一度だけ呼び出されるメソッドの事です。
なぜそんなものが必要かというとインスタンス化した時の初期状態を自由に操作するためです。
クラスをインスタンス化した時に初期値として変数に値を入れたいとなった場合などに使用することができます。
まとめ
この記事ではJavaの継承について解説してきました。
- 継承とは?
- 継承のメリット
- 継承の注意点
Javaでは継承を使用することでとても見やすく、修正しやすいコードをかけるようになります。
コードを書くときは「自分だけが分かればいいや」という考えでなく、「他の人が見てもわかるように書こう」という精神を大切にしていくことが重要です。
以上で今回の解説は終了となります。
コメント