同じ名前で違う使い方ができる!「オーバーロード(Overload)」とは?
Javaでは、同じ名前のメソッドを引数の数や型を変えて複数定義することができます。
このような機能を オーバーロード(Overload) と呼びます。
ひとつの機能に柔軟な使い方を持たせたいときに便利です。
オーバーロードとは?
オーバーロードは、同じメソッド名で引数の型や数を変えて複数定義することです。
Javaではメソッド名と引数のリストで識別するため、戻り値の型が違うだけではオーバーロードにはなりません。
基本構文(例)
public class Calculator {
// 引数1つ
public int add(int a) {
return a + 10;
}
// 引数2つ
public int add(int a, int b) {
return a + b;
}
// 引数の型が異なる
public double add(double a, double b) {
return a + b;
}
}
使い方
Calculator calc = new Calculator();
System.out.println(calc.add(5)); // → 15(引数1つ)
System.out.println(calc.add(5, 7)); // → 12(引数2つ)
System.out.println(calc.add(2.5, 3.0)); // → 5.5(引数型がdouble)
オーバーロードの使いどころ
- メソッド名を統一したまま異なる使い方を実現できる
- 同じ処理のバリエーションが増やしやすい
- コンストラクタでもよく使われる(引数の違いで初期化方法を変える)
注意点
- 戻り値の型が違うだけではオーバーロードにならない
- 引数の型・順番・数が異なる必要がある
- 自動型変換(int → double など)でどのメソッドを呼ぶか曖昧にならないよう注意
NG例(コンパイルエラー)
public int calc(int a) { return a; }
// ↓これはエラー(戻り値だけ違う)
public double calc(int a) { return a * 1.0; }
まとめ
オーバーロード(Overload)は、同じ名前のメソッドを引数の違いで使い分ける機能です。
コードの可読性と柔軟性が高まり、メソッド名の統一が可能になります。
Javaのクラス設計では非常によく使われるテクニックなので、ぜひ活用してみましょう!