基本的にはメソッドに同じ名前を命名できません。
しかし、同じメソッド名で受け取る値を変えることで同じメソッドを定義することをオーバーロードといいます。
オーバーロードとは
Javaにおいて、オーバーロード(Overload)とは、同じメソッド名で異なる引数リストを持つ複数のメソッドを定義することを言います。
具体的には、同じクラス内で同じメソッド名を持つ複数のメソッドを定義し、引数の型、引数の数、引数の並び順が異なる場合にオーバーロードされたメソッドとなります。
オーバーロードされたメソッドは、呼び出し元の引数の型、数、並び順に応じて、適切なメソッドが自動的に選択されます。オーバーロードにより、同じメソッド名を持つ複数のメソッドを定義することで、メソッドの使い勝手を向上させることができます。
サンプルコード
以下は、例として、int型の引数を2つ受け取るメソッドと、String型の引数を2つ受け取るメソッドをオーバーロードする例です。
public class Main {
public static void main (String[] args) {
System.out.println("1つ目: " + printNumber(10, 20));
System.out.println("2つ目: " + printNumber("10", "20"));
}
// 1つ目
public static int printNumber (int num1, int num2) {
reutrn num1 + num2;
}
// 2つ目
public static String printNumber (String str1, String str2) {
reutrn num1 + num2;
}
}
実行結果
1つ目: 30
2つ目: 1020
実行結果から同じメソッド名で定義してもエラーとならず、値の受け渡しを行えていることが確認できます。
この例では、printNumberメソッドとprintStringメソッドは同じメソッド名を持ちますが、引数の型が異なります。このため、呼び出し元で渡された引数の型に応じて、適切なメソッドが選択されます。
メソッド名は誰が見てもわかりやすいもので定義する必要があるので引数が違うだけで返却される値が同じ場合などオーバーロードをうまく利用して可読性の高いコーディングに心がけましょう。