Javaの基本文法であるオーバーロードについて解説します。
似たような言葉にオーバーライドという言葉もありますが意味は異なりますので注意してください。
オーバーロードとは?
引数の数、型が異なれば同じメソッド名のメソッドを定義することが出来る機能です。
実は皆さんがよく利用する機能でオーバーロードが使われています。
それはSystem.out.printlnです。
引数にはint型やlong型、Sringや任意のクラスなど様々なものを渡すことができましたが、利用するメソッドはSystem.out.printlnでした。
もしオーバロードという機能がなければ引数の型ごとにメソッドを使い分ける必要があります。
例) ※実際に下記のようなメソッドはありません。
- System.out.printlnInt
- System.out.printlnLong
- System.out.printlnString
- etc
オーバーロードのメリットを理解していただけたでしょうか?
オーバーロードの実装方法
特殊記述は必要ありません。
引数の数、型が異なるように指定しメソッドを作成すればOKです。
※戻り値の型が違う場合はオーバーロードできませんので注意してください。
サンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class Sample { public void show() { System.out.println( "引数なし" ); } public void show(String s) { System.out.println( "String型1つ: " + s); } public void show( int a) { System.out.println( "int型1つ: " + a); } public void show( int a, int b) { System.out.println( "int型2つ: a=" + a + " b=" + b ); } } |
あとは呼び出し元で指定の引数を持つメソッドをCallすればOKです。
1 2 3 4 5 6 7 8 9 | public class Test { public static void main(String args[]) { Sample sample = new Sample(); sample.show(); sample.show( "hello world" ); sample.show( 100 ); sample.show( 1 , 2 ); } } |
実行結果
引数なし
String型1つ: hello world
int型1つ: 100
int型2つ: a=1 b=2