Java のメソッド・オーバーロード
メソッド・オーバーロード(多重定義)を利用すると、同じ名前を持ちながら、異なるパラメータ(引数)を持つ複数のメソッドを定義することができます。
1. オーバーロードの基本概念
通常、メソッド名は一意である必要がありますが、オーバーロードを使えば、以下のように引数の型や数が異なれば同じ名前を共有できます。
int myMethod(int x)
float myMethod(float x)
double myMethod(double x, double y)2. オーバーロードを使わない場合(不便な例)
例えば、整数(int)の加算と、実数(double)の加算を行うメソッドを作るとします。オーバーロードを使わない場合、それぞれに別の名前を付ける必要があります。
// int型のためのメソッド
static int plusMethodInt(int x, int y) {
return x + y;
}
// double型のためのメソッド
static double plusMethodDouble(double x, double y) {
return x + y;
}
public static void main(String[] args) {
int myNum1 = plusMethodInt(8, 5);
double myNum2 = plusMethodDouble(4.3, 6.26);
System.out.println("int: " + myNum1);
System.out.println("double: " + myNum2);
}これでは、同じ「加算」というアクションなのに、データの型ごとに異なる名前を覚えなければなりません。
3. オーバーロードを使った場合(推奨される例)
同じ処理を行うのであれば、一つのメソッド名をオーバーロードするのがスマートです。以下の例では、plusMethod をオーバーロードして、int と double の両方に対応させています。
// int型に対応
static int plusMethod(int x, int y) {
return x + y;
}
// double型に対応
static double plusMethod(double x, double y) {
return x + y;
}
public static void main(String[] args) {
int myNum1 = plusMethod(8, 5); // 1番目が呼ばれる
double myNum2 = plusMethod(4.3, 6.26); // 2番目が呼ばれる
System.out.println("int: " + myNum1);
System.out.println("double: " + myNum2);
}