Java研修8:クラスの継承

【クラスの継承】

*全てのクラスはObjectクラスを継承!(特に記述の必要なし)

・スーパークラス → 継承元のクラス

・サブクラス → 継承側のクラス

 

継承することで、自分自身で定義されたものの他に、スーパークラスのメソッドを実行したりメンバ変数を参照することが可能。

 

<例:クラスBがクラスAを継承しクラスTopで呼出す>

↓実行結果(今回はコンソール上に表示)

*サブクラスでコンストラクタの指定がない時

・スーパークラス側 → 自動的にスーパークラス側の引数がないコンストラクタを呼出す

<サブクラス内でスーパクラスのコンストラクタを指定>

↓実行結果(今回はコンソール上に表示)

 

メソッドのオーバーライド

スーパークラスで定義したメソッドと同じものをサブクラスでも定義し、上書きすることができる!

↓実行結果(Bクラスのオブジェクトを作成時)

↓実行結果(Cクラスのオブジェクトを作成時)

【継承したクラスのオブジェクトを扱う】

*スーパークラスの変数に対してサブクラスのオブジェクトを割り当てれる(スーパークラスのオブジェクトでもOK)

スーパークラスの変数にサブクラスのオブジェクトを格納

→このオブジェクトではスーパークラスで定義されているメソッドだけ実行可。

(サブクラスでオーバーライドしている場合は、サブクラスのメソッドを呼出す。)

*オーバーライド処理はオブジェクトを作成したクラスが優先!

↓実行結果(スーパクラスで定義してるメソッドだけ実行*今回はオーバーライドしているのでサブクラスで指定した内容表示)

obj[] = new subA();

【スーパークラスの変数を使用しサブクラスのオブジェクトを配列に格納】

↓実行結果

【修飾子:final】

他のクラスからの継承を禁止

オーバーライドを禁止

値の代入を禁止(フィールドに指定)

定数(初期値の設定)

【equals()メソッド】

左辺と右辺の値が一致するかの判断

戻り値:boolean型、

左辺と右辺の値が一致 → 「true」 を返す

<例1:オブジェクトの参照先情報が同じかを判断>

<例2:文字列が同じかを判断>