Java 速習チュートリアル

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 をオーバーロードして、intdouble の両方に対応させています。

// 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);
}