Javaの継承とは? 初心者向けにextendsの使い方をわかりやすく解説
目次
こんにちは! 内定者向けのJava Bronze受験対策で講師役の経験がある田口です。
AMG Solutionでは未経験者のプログラミング基礎学習として、Java SE Bronze合格のための勉強を取り入れています。未経験者にとっては初めて触れる概念が多く、苦戦するポイントも多々あります。
今回はつまずきやすいポイントである「継承」について、たくさんのイラストを用意してきました。オブジェクト指向はなんとなく分かるけど、継承がよくわからない……という方はここで克服しちゃいましょう!
継承とは
まずはChatGPTに「継承の意味を簡単に説明してください」と尋ねてみました。
継承とは、あるクラス(親クラス)の属性やメソッドを別のクラス(子クラス)が引き継ぐ仕組みのことです。これにより、子クラスは親クラスの機能を再利用したり、追加・変更することができます。
例えば、親クラスで定義された基本的な機能を子クラスに引き継ぎ、子クラスで特定の動作を追加・変更することができるため、コードの再利用が促進され、効率的な開発が可能になります。
……とのことです。いまいち分からないという方は次に行きましょう。
職人の師匠と弟子で例える
継承について調べると、親クラス・子クラスやスーパークラス・サブクラスといったワードが出てきます。ここで私がおすすめしたいイメージは「師匠と弟子」です。

師匠がある技術を持っていたとすれば、弟子は師匠の技術を受け継ぎます。そして、ゆくゆくはその弟子ならではの技も練り込まれていくでしょう。弟子は、師匠の持つ技を使ったり(親クラスの機能の再利用)、弟子独自の技を持ったり(機能の拡張)するのです。
なぜ継承が必要なのでしょうか。職人が師を持たずとも、各々が基礎機能を持てば良いのでは? 弟子がそれぞれの技を持たずとも、師匠が何でもできるようになればいいのでは? そう考えることもできますが、継承することで便利になる場面が多くあります。
コードの再利用
継承を活かす利点の一つに、コードの再利用があります。親クラスで定義された機能を、子クラスはそのまま使うことができます。再利用することで、クラスごとに同じ処理を書かずに済みます。また、共通処理に変更が入った場合でも、親クラスの修正一つで済むようになります。
師弟で考えてみましょう。弟子は師匠がいることで、基礎の技をそのまま教わることができます。一人だけで試行錯誤するよりも、早く身につけられます。

また、弟子が複数人いても同じ師匠から継承できます。そのため、どの弟子も師匠と同じ技術を身につけられます。

機能の拡張
継承には、機能の拡張ができるという利点もあります。親クラスの機能を持ちながら、子クラスで新しい機能を追加できます。これにより、既存のコードに影響を与えることなく、新しい機能や特性を加えられます。
師弟で見てみましょう。弟子は師匠の技術を継承しつつ、弟子独自の技も持つことができます。また、継承した技術に弟子独自のアレンジも加えられます。そうすることで、弟子の得意分野に応じた分業ができるようになります。

Javaで継承を使う方法
Javaでは、extendsを使ってクラスを継承します。
例えば、親クラスとなる「職人」クラスと、その職人を継承した「弟子」クラスを考えてみましょう。
class 職人 {
void 剣をつくる() {
System.out.println("剣をつくります");
}
}
class 弟子 extends 職人 {
void 斧をつくる() {
System.out.println("斧をつくります");
}
}
この例では、「弟子」クラスが「職人」クラスを継承しています。そのため、弟子クラスでは自分で定義した「斧をつくる」だけでなく、親クラスから継承した「剣をつくる」も利用できます。
このように、extendsを使うことで、既存のクラスが持っている機能を引き継ぎながら、新しい機能を追加できます。
Javaの継承で覚えておきたい用語
継承を学習すると、「親クラス」「子クラス」以外にもさまざまな用語が登場します。最初は混乱しやすいため、それぞれの意味を整理しておきましょう。
- スーパークラス:継承される側のクラスです。親クラスとも呼ばれます。
- サブクラス:スーパークラスを継承する側のクラスです。子クラスとも呼ばれます。
- extends:クラスを継承するときに使用するキーワードです。
- オーバーライド:親クラスから継承したメソッドを、子クラスで定義し直すことです。
まとめ
継承を使うことで、コードの再利用性が高まり、読みやすく、変更にも強い設計が可能になります。特にチーム開発では、共通の機能を親クラスにまとめることで、保守や拡張がしやすくなります。弟子が師匠の技を引き継ぐように、クラス間で機能を効率よく受け継げるのが継承の強みです。
this や super を使うことで、師匠と弟子をもっと使いこなせるようになるのですが……これはまたの機会に解説しようと思います。それでは!
《関連記事》


