オーバーロード

オーバーロードは名前は同じメソッドでも、引数や戻り値の肩が異なるメソッドのことを言います。
オーバーロードを実装するには以下点に気をつけて実装する必要があります。

オーバーロードができる場合

まず、大前提として、メソッド名が同じであることです。
  • メソッドの引数の数が異なること
  • メソッドの引数の型が異なること
上記を満たせていれば、同じメソッド名でも同じクラス内に定義することができます。

オーバーロードできない場合

  • メソッドの引数の名前だけが異なる
  • メソッドの戻り値の型だけが異なる

実際の例

eclipseで「System.out.println」を入力すると、引数が異なるが同じ名前のメソッドがいくつも候補に上がります。
これこそまさにオーバーロードの実例です。こうすることで、引数の型が違うだけで同じメソッドを定義することができます。

プログラム例

以下のように 同じメソッド名を呼び出していても、引数を変えることで、異なる処理を行うことができます。
import Override.Hyadalco;

public class Sample {
	
	public static void main(String[] args) {
		Hyadalco hyadalco = new Hyadalco();
		hyadalco.hyadalco();
		System.out.println();
		
		hyadalco.hyadalco("スライム");
		System.out.println();
		
		System.out.println("ダメージ:"+hyadalco.hyadalco(0.5));
	}
}
package Override;

public class Hyadalco {
	public void hyadalco() {
		System.out.println("hyadalcoメソッド");
		System.out.println("ヒャダルコ");
	}
	
	public void hyadalco(String enemy) {
		System.out.println("hyadalcoメソッド:String enemy");
		System.out.println(enemy+"に対してヒャダルコ");
	}
	
	public double hyadalco(double rate) {
		System.out.println("hyadalcoメソッド:double rate");
		System.out.println("ヒャダルコ、ダメージ"+rate+"倍");
		return 300*rate;
	}
}
hyadalcoメソッド
ヒャダルコ

hyadalcoメソッド:String enemy
スライムに対してヒャダルコ

hyadalcoメソッド:double rate
ヒャダルコ、ダメージ0.5倍
ダメージ:150.0