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