クラスの継承
継承(Inheritance):あるクラスの機能を引き継ぎながら新しいクラスを定義すること
→あるクラスで定義したプロパティとメソッドをそのまま受け継ぎつつ、独自のプロパティやメソッドを差分として定義することできる
継承元となるクラスのことスーパークラス、継承の結果できた新しいクラスのことをサブクラスと呼ぶ
継承には、クラスを定義する際に extends キーワードを付けて継承元を指定する。
一度に複数のクラスをまとめて継承することはできない(多重継承の禁止)。
public class A extends B{ // 処理 }
親クラスの定義
継承元となる親クラスの定義をする
public class Drink { String name; int price; public Drink(String name, int price){ this.name = name; this.price = price; } public void buy(){ System.out.println("買った!"); } public void drink(){ System.out.println("飲んだ!"); } }
親クラスを継承したクラスの定義
継承したクラスでは、自身のクラスで定義したメソッドの他に、親クラスのメソッドを呼び出すことができる。(アクセス修飾子がpublic, protectedのものに限る。同一パッケージであればパッケージプライベートメソッドも呼び出し可能)
また、親クラスと同一シグネチャのメソッドを継承したクラスで定義した場合は、 そのメソッドの処理を上書きすることができる。
public class Coffee extends Drink { boolean isHot public Coffee(String name, int price, boolean isHot){ // 継承元のコンストラクタを呼び出す super(name, price); this.isHot = isHot; } // 親クラスと同じシグネチャのメソッドを定義することで、 // メソッドの処理を上書きすることができる @Override public void drink(){ System.out.println("苦くて飲めなかった"); } public void addMilk(){ System.out.println("ミルクを入れた"); } }