オーバーロードは名前は同じメソッドでも、引数や戻り値の肩が異なるメソッドのことを言います。
オーバーロードを実装するには以下点に気をつけて実装する必要があります。
オーバーロードができる場合
まず、大前提として、メソッド名が同じであることです。
- メソッドの引数の数が異なること
- メソッドの引数の型が異なること
上記を満たせていれば、同じメソッド名でも同じクラス内に定義することができます。
オーバーロードできない場合
- メソッドの引数の名前だけが異なる
- メソッドの戻り値の型だけが異なる
実際の例
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メソッド:String enemy
スライムに対してヒャダルコ
hyadalcoメソッド:double rate
ヒャダルコ、ダメージ0.5倍
ダメージ:150.0