Java オーバーライドとオーバーロード -備忘録-

なぜ勉強したか

  • クラスに関しての知識がぼんやりしていた為。
  • 継承との関係性を理解する為。

オーバーライド

  • スーパークラスで定義されているメソッドを、サブクラスで再定義すること。サブクラスで特化した機能を付けたい場合に使用する。
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); // 食べ物を食べました。

	}
}

覚え方

オーバーライド

オーバー(上に) ライド(乗る=上書きする)
スーパークラスのメソッドを上書きする。

オーバーロード

オーバー(上に) ロード(読み込む)
メソッドを複数読み込む