継承
あるクラスの機能を引き継ぎながら新しいクラスを定義すること
元のクラスを「親クラス」「スーパークラス」などと呼び、新たに定義されるクラスを「子クラス」「サブクラス」という
継承関係の表現方法
1つのクラスをベースとして、複数の子クラスを定義することもできる。孫クラス、ひ孫クラスの定義もできる。
多重継承(複数のクラスを親として1つの子クラスを定義すること)はできない。
継承を用いたクラスの定義
public class クラス名 extends 元となるクラス名 {
親クラスとの差分となるメンバ
}
オーバーライド
親クラスを継承して子クラスを宣言するさい、親クラスのメンバを子クラス側で上書きすること
Animal.java
public class Animal {
void sound() {
System.out.println("動物の鳴き声");
}
}
Cat.java
public class Cat extends Animal {
void sound() {
System.out.println("ニャーニャー");
}
}
Main.java
public class Main{
public static void main(String[] args) {
Animal animal = new Animal();
animal.sound();
Cat cat = new Cat();
cat.sound();
}
}
結果.
動物の鳴き声
ニャーニャー
親クラスにあれば上書きされ、なければ追加される
継承やオーバーライドの禁止
final
がついているクラスは継承できない
String
クラスも継承できない
JavaのAPIにリファレンス下記のように表現されているため(finalの記載)
public final class String extends object...
親クラスのメンバへのアクセス
直接子クラス内から親クラスへのメンバを利用する。
super
を使用する
親インスタンス部分のフィールドの利用
super.フィールド名
親インスタンス部分のメソッドを呼び出す
super.メソッド名(引数)
親クラスのコントラクタの呼び出し
super(引数)
is-aの関係
子クラスは is-a 親クラス(子クラスは、親クラスの一種)