Javaの継承とポリモーフィズムに関する理解の第一歩として、「基底クラス(スーパークラス)」と「派生クラス(サブクラス)」の関係について詳しく説明します。
基底クラス(スーパークラス)とは
基底クラスとは、他のクラスに共通する基本的な機能や特性を定義したクラスのことです。Javaにおいては、extendsキーワードを使って他のクラスから継承可能なクラスを定義します。
上記のAnimalクラスは基底クラスです。このクラスを継承すれば、共通の動作(speakメソッドなど)を再利用することができます。
派生クラス(サブクラス)とは
派生クラスとは、既存のクラス(基底クラス)を継承して、新たな機能を追加したクラスのことです。Javaでは以下のように記述します。
ここでDogはAnimalの派生クラスです。Animalのpublicメソッドを継承しつつ、独自のbarkメソッドやspeakメソッドの**オーバーライド(再定義)**が可能です。
継承の特徴
-
DogはAnimalのすべてのpublicおよびprotectedメンバーにアクセス可能。 -
Javaでは単一継承のみ許可されています。つまり、1つのクラスからしか継承できません。
-
コンストラクタは継承されませんが、
super()を使って基底クラスのコンストラクタを呼び出すことができます。
ポリモーフィズムとの関係
継承関係にあるクラスでは、**ポリモーフィズム(多態性)**が利用可能です。例えば次のように記述できます。
このように、スーパークラス型の変数でサブクラスのインスタンスを扱い、オーバーライドされたメソッドを実行するのがポリモーフィズムの典型例です。
まとめ
| 用語 | 説明 |
|---|---|
| スーパークラス(基底クラス) | 共通の振る舞いや属性を定義する上位クラス。例:Animal |
| サブクラス(派生クラス) | スーパークラスを継承し、独自の振る舞いを追加・変更できるクラス。例:Dog |
| 継承 | サブクラスがスーパークラスの性質(メソッドやフィールド)を引き継ぐ仕組み |
| ポリモーフィズム | スーパークラス型でサブクラスのインスタンスを扱い、動的にメソッドを実行できる仕組み |
生成日:2025/05/03