なぜ勉強したか
- クラスに関しての知識がぼんやりしていた為。
- 継承との関係性を理解する為。
オーバーライド
- スーパークラスで定義されているメソッドを、サブクラスで再定義すること。サブクラスで特化した機能を付けたい場合に使用する。
public class Food {
String action = "食べ物を食べました。";
public void EatFood() {
System.out.println(action);
}
}
public class Vegetables extends Food {
String action = "野菜を食べました。";
@Override
public void EatFood() {
System.out.println(action);
}
}
public class Eat {
public static void main(String[] args) {
Food eat1 = new Food();
Food eat2 = new Vegetables();
eat1.EatFood(); //食べ物を食べました。
eat2.EatFood(); //野菜を食べました。
}
}
- オーバーライドするメソッドには@Overrideを付けたほうが良い。理由としては、スペルミスや存在しないメソッドをオーバーライドしてるよーってエラーで知らせてくれる。
- 同一クラスないの同一メソッド名で、「引数の型」、「引数の数」、「並び順」が異なるメソッドを複数定義すること。
public class Food {
/**
*
* @param food 食べ物
* @param type 食べる種類
*/
public void EatFood(String food, int type) {
System.out.println(food + "を" + type + "種類食べました。");
}
/**
*
* @param food 食べ物
*/
public void EatFood(String food) {
System.out.println(food + "を食べました。");
}
}
public class Eat {
public static void main(String[] args) {
String food = "食べ物";
int typeNum = 2;
Food eat1 = new Food();
eat1.EatFood(food, typeNum); // 食べ物を二種類食べました。
eat1.EatFood(food); // 食べ物を食べました。
}
}
覚え方
オーバーライド
オーバー(上に) ライド(乗る=上書きする)
スーパークラスのメソッドを上書きする。
オーバー(上に) ロード(読み込む)
メソッドを複数読み込む