Javaのオーバーロードについて学んだのでアウトプットします。
オーバーロードとは
同じメソッド名を定義することをオーバーロードといいます。
実際にコードを書いたことがある方にはわかると思いますが、同じクラス内に同じメソッド名を作成するとコンパイルエラーとなります。しかし、メソッドの受け取る引数の型の違いや、個数が違えば同じメソッド名を定義することができます。これをオーバーロードといいます。
書き方・使い方
以下に書き方のサンプルを紹介します。
オーバーロード①、②共に2つのaddメソッドが定義され引数の型、戻り値の型がそれぞれ違います。これらのファイルを実行するとそれぞれ同じ型のメソッドが呼ばれ実行されていることがわかります。
public class Main {
public static void main(String[] args) {
System.out.println(add("文字"));
}
//String型の引数を受け取りString型を返すaddメソッド
public static String add(String a) {
return a + a;
}
//int型の引数を受け取りint型を返すaddメソッド
public static int add(int b) {
return b + b + b;
}
}
//実行結果
文字文字
public class Main {
public static void main(String[] args) {
System.out.println(add(11));
}
public static String add(String a) {
return a + a;
}
public static int add(int b) {
return b + b + b;
}
}
//実行結果
33
また、受け取る引数の個数が違う場合、引数の個数が一致する方が呼ばれます。
public class Main {
public static void main(String[] args) {
System.out.println(add("文字の","連結"));
}
public static String add(String a) {
return a;
}
public static String add(String a,String b) {
return a + b;
}
}
//実行結果
文字の連結
使い方の例として
オーバーロード③ の機能を用いることでコンストラクターを複数(引数の個数が違う)作ることができます。そうすることで、受け取る引数の個数によって動くメソッドを変えることができます。
メリット・デメリット
メリット
同名のメソッドを定義できること
デメリット
意図しない同名のメソッドを呼んでしまう恐れがあること