継承
014 - 継承
継承とは、既存のクラスの機能を引き継いで新しいクラスを作る仕組みです。親クラス(スーパークラス)の特徴を子クラス(サブクラス)が受け継ぎ、さらに独自の機能を追加できます。例えば、「動物」クラスを作り、そこから「犬」「猫」クラスを継承することで、共通部分を一箇所にまとめ、それぞれの特徴だけを個別に定義できます。
継承の学習は、効率的で保守しやすいコード設計のために不可欠です。共通の機能を親クラスに集約することで、コードの重複を避け、変更が必要な際も一箇所を修正するだけで済みます。また、is-a関係(犬は動物である)を自然に表現でき、現実世界の概念をプログラムで直感的にモデル化できます。
具体的な使用場面を見てみましょう。図形描画プログラムでは、「Shape」親クラスに座標と色の情報を定義し、「Circle」「Rectangle」「Triangle」クラスがそれぞれ継承します。共通の「draw()」メソッドは親クラスで宣言し、各子クラスで図形ごとの描画方法を実装します。従業員管理システムでは、「Employee」親クラスに名前と社員番号を持たせ、「RegularEmployee」「PartTimeEmployee」クラスが給与計算の違いを実装します。
継承には重要な特徴があります。子クラスは親クラスのpublicおよびprotectedメンバを自動的に引き継ぎます。「extends」キーワードで継承関係を宣言します。子クラスで親クラスのメソッドを上書きすることを「オーバーライド」と呼び、「@Override」アノテーションで明示します。「super」キーワードで親クラスのメソッドやコンストラクタを呼び出せます。
継承を習得することで、階層的で拡張しやすいクラス設計ができるようになります。共通機能を親クラスにまとめることで、DRY原則(Don't Repeat Yourself)を実践できます。また、新しい種類のオブジェクトを追加する際も、親クラスから継承して差分だけを実装すればよく、開発効率が向上します。適切な継承階層により、プログラムの理解も容易になります。
前提知識としては、クラス、メソッド、アクセス制御の理解が必要です。特に、publicとprotectedの違いを理解していることが重要です。また、継承はポリモーフィズム、抽象クラス、インターフェイスといったより高度な概念の基礎となるため、しっかりと理解しておく必要があります。
中項目
継承の基本
コードの再利用性を飛躍的に向上!継承でクラスを拡張する基本技術
暗黙的なスーパークラスのコンストラクタ呼び出し
継承の初期化連鎖を理解!super()の暗黙的呼び出しメカニズムを完全マスター
明示的なスーパークラスのコンストラクタ呼び出し
親の力を借りる!super()で親コンストラクタを明示的に呼び出す技術
protected修飾子
継承の架け橋!protected修飾子で子クラスに安全に公開する
オーバーライドされたメソッドの利用
動的に振る舞いを切り替える!オーバーライドで実現する柔軟な設計
明示的なスーパークラスのメソッド呼び出し
親の処理を賢く再利用!super.メソッド()で機能を拡張する技術
finalメソッド
変更不可の確固たる処理!finalメソッドで設計意図を確実に守る
Objectクラスの継承
すべてのクラスの頂点!Objectクラス継承で得られる共通機能
