【けいしょう】
継承 とは?
最終更新:
💡 親クラスの「財産を受け継ぐ」子クラスの仕組み
既存のクラスの性質や機能を引き継ぎ、新しいクラスを作る仕組み。共通の処理を再利用し、子クラスで機能を追加したり動作を変えたりできる。
📌 このページのポイント
継承って何のためにあるの?
共通の機能を再利用して、種類ごとの違いを表すためだよ。例えば「動物」に共通の機能を用意し、「犬」や「猫」をその子クラスにすると、共通部分を毎回書かずに済むんだ。
オーバーライドすると、親のコードを書き換えるの?
親のコードは変えないよ。例えば「鳴く」というメソッドに、犬では「ワン!」、猫では「ニャー!」という子クラス独自の実装を定義するんだ。
複数の親から継承することもできる?
ダイヤモンド問題ってどんな形?
共通の祖先AをBとCが継承し、さらにDがBとCを継承する形だよ。A由来の状態やメソッドが2つの経路を通るため、どう扱うかが問題になる。単に無関係な2つの親で名前が重なる場合とは分けて考えよう。
「継承より合成」って何?
必要な機能を、親から引き継ぐ代わりに部品として持つという考え方だよ。「車は乗り物の一種」なら継承を検討できるけれど、「車はエンジンを持つ」ならエンジンを部品にするのが自然だね。合成がいつも正解という意味ではなく、表したい関係に合わせて選ぶんだ。
もっと詳しく知りたい人へ
Javaでは親のprivateフィールドやコンストラクターも継承する?
privateメンバーとコンストラクターは継承しません。親の公開されたメソッドを通してprivateフィールドを扱ったり、子のコンストラクターから親のコンストラクターを呼んだりすることはできます。
まとめ:ざっくりこれだけ覚えればOK!
「継承」って出てきたら「親クラスの性質や機能を引き継いで子クラスを作る仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Inheritance」 = 相続・継承
💬 親から受け継ぐという意味を、クラスの性質や機能を引き継ぐ仕組みに重ねた言葉だよ。