継承とは
- クラスの定義内容を受け継ぐこと
- メソッド・フィールドを定義し直さなくてもそのまま使える:便利
Javaにおける継承
- 拡張:継承したクラス(子クラス)で独自のメソッドやフィールドを追加
- 再定義(オーバーライド):継承したクラス(子クラス)で元のメソッド・フィールドの定義を変更できる
継承のイメージ
- 親よりも子の方が強い
- 亀仙人(親クラス)と弟子の悟空(子クラス)
- 弟子の悟空は かめはめ波(親の定義をそのまま使える) + 3倍かめはめ波(オーバーライド) + 舞空術(拡張)
- 亀仙人(親クラス)と弟子の悟空(子クラス)
継承の用語
-
元のクラス(継承されるクラス)
- 親クラス
- スーパークラス
- 継承元
-
元のクラスを継承したクラス
- 子クラス
- サブクラス
- 派生クラス
- 継承クラス
- 継承先
継承のコード例:定義の仕方
- extendsキーワード
- 子クラスでは、親クラスのフィールドやメソッドを書かなくても使える
- 親クラスは1つしか指定できない
class 子クラス名 extends 親クラス名{
}
継承のコード例
- 親クラス
public class Animal{
public void eat(String f){
System.out.println(f+"を食べます");
}
public void sleep(){
System.out.println("眠ります");
}
public void wakeUp(){
System.out.println("起きます");
}
}
- 子クラス
- Birdクラスは、親クラスのAnimalクラスのsleepメソッドやwakeUpメソッドを呼び出せる
- ①:拡張
- ②:オーバーライド
public class Bird extends Animal{
// ①:拡張
public static int wing = 2;
pulic void fly(){
System.out.println("飛びます");
}
// ②:オーバーライド(上書き)
// 親と同じメソッド名
pulic void sleep(){
System.out.println("木の上で眠ります");
}
}
「super」 キーワード
- オーバーライドを行う際に、親クラスの定義を利用できる
- オーバーライドした子クラスのメソッドの中から、親クラスのメソッドやフィールドにアクセスしたいときに用いる
public class Bird extends Animal{
pulic void sleep(){
System.out.println("木の上で眠ります");
// super
super.sleep();
}