オブジェクト指向言語には「オーバーロード(overload, 多重定義)」という機能があります。
オーバーロードには主に「メソッドのオーバーロード」と「演算子オーバーロード」という2種類がありますが、今回は「メソッドのオーバーロード」だけ取り扱います。
オーバーロードは簡単に言うと
名前は同じだけど引数の個数や型が違うメソッドを複数個定義する機能
です。
実際にオーバーロードの例を見てみましょう。
まず以下の OLtest というクラスを定義します。
「定義したメソッドの名前がすべて show である」ことに注意して下さい。
public class OLtest { public void show(){ System.out.println("引数なし"); } public void show( String a ){ System.out.println("引数は文字列クラス: " + a); } public void show( int a ){ System.out.println("引数は整数クラス: " +a); } public void show( int a, int b ){ System.out.println("引数は整数クラスx2: " +a + "-" + b); } }
この OLtest クラスを次の Main クラス内のメインメソッドから使ってみましょう。
public class Main{ public static void main(String[] args) { OLtest ol = new OLtest(); ol.show(); ol.show( "ほげ" ); ol.show( 123 ); ol.show( 123, 456 ); } }
実行結果は次の様になります。
引数なし 引数は文字列クラス: ほげ 引数は整数クラス: 123 引数は整数クラスx2: 123-456
このように、同じ名前のメソッド show を呼び出しているのに、引数の数や型が違うとそれらに対応した異なるメソッドが呼び出されるので表示内容が変わります。