今回はJavaのオーバーロードについて解説していきます。
- オーバーロードとは
- オーバーロードのメリット
- オーバーロードの使い方
というような内容について解説していきます。
オーバーロードとは
オーバーロードとは同じメソッド名を複数定義することです。
ただしメソッドの引数の数や型、並び順のいずれか1つは異なる必要があります。
これは引数の数・型・並び順が同じだった場合、呼び出された際にどちらのメソッドを使えば良いかわからないからです。
オーバーロードを使う際は、これに気をつけて、引数の数・型・並び順のどれか一つは変えるようにしましょう。
オーバーロードのメリット
オーバーロードのメリットは一つのメソッド名を知っていれば、様々な処理を呼び出すことが可能になることです。
例えばよく使うSystem.out.println()も実はオーバーロードを利用しています。
このメソッドには引数にStringを渡しても、int型の数字を渡しても標準出力をしてくれますよね?
これはSystem.out.printlnが同じメソッド名で異なる引数で多数宣言されているため、様々な引数に対応していて、出力することが出来ます。
出力したい値によって呼び出すメソッド名が違うことを想像してみてください。
「今はint型を呼び出したいから、printlnInt()を呼び出すか...」
「次はString型を呼び出したいから、printlnString()を呼び出すか...」
のようにいちいち呼び出すメソッド名を変えなければいけないのはめんどくさくいと思いませんか?
オーバーロードという機能があることで、どんな型でもprintlnに渡しておけば出力してくれるようになります。
これがオーバーロードのメリットです。
オーバーロードのサンプル
オーバーロードについて理解が深まったところで実際のコードを見てより理解を深めましょう!
public class SampleOverload {
public static void main(String[] args) {
hello();
System.out.println();
hello("田中");
System.out.println();
hello("佐藤", 23);
}
/**
* 引数なしのhelloメソッド
* 挨拶する
*/
private static void hello() {
System.out.println("こんにちは!");
}
/**
* String型の引数を受け取る
* @param name
*/
private static void hello(String name) {
System.out.println("こんにちは!");
System.out.println("僕の名前は" + name + "です!");
}
/**
* String型とint型の引数を受け取る
* @param name
* @param age
*/
private static void hello(String name, int age) {
System.out.println("こんにちは!");
System.out.println("僕の名前は" + name + "です!");
System.out.println(age + "歳です");
}
}
上のプログラムにはhelloメソッドが3つ定義されています。
しかしそれぞれのhelloメソッドは引数が違います。
- 引数なし
- String型の引数を1つ持つ
- String型とint型の引数を1つずつ持つ
これらのhelloメソッドはそれぞれ違う挨拶をします。
実行結果は次のようになります。
こんにちは!
こんにちは!
僕の名前は田中です!
こんにちは!
僕の名前は佐藤です!
23歳です
まとめ
まとめにいきます。
今回はJavaのオーバーロードについてサンプルを用いて解説しました!
オーバーロードは同じメソッド名であっても、引数の数・型・順番を変えることで複数宣言できるというものです。
オーバーロードを使うことでメソッドを利用する側はメソッド名を一つだけ知っていればよく、便利になります。