オーバーロード

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

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

まず、大前提として、メソッド名が同じであることです。

  • メソッドの引数の数が異なること
  • メソッドの引数の型が異なること

上記を満たせていれば、同じメソッド名でも同じクラス内に定義することができます。

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

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

実際の例

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

プログラム例

以下のように
同じメソッド名を呼び出していても、引数を変えることで、異なる処理を行うことができます。
[java title=”Sample.java”]
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));
}
}
[/java]

[java title=”Hyadalco.java”]
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;
}
}
[/java]

hyadalcoメソッド
ヒャダルコ

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

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