Java オーバーロードのサンプル

Javaのオーバーロードのサンプルです。

目次

オーバーロード

  • 1つのクラスの中で、メソッド名またはコンストラクタ名が同じで引数が異なるものです。(引数の型が異なる、引数の数が異なる、引数の順番が異なる)
  • メソッド名、引数の型、引数の数の組み合わせをシグネチャ(signature)と呼びます。
  • 渡す引数によって自動的に引数にあったメソッドまたはコンストラクタが実行されます。
  • 継承の機能で、似た名前のオーバーライドがありますがそれとは別です。オーバーロードと継承は関係ありません。
    Java オーバーライドのサンプル
  • 以下は、Oracleの8.4.9. Overloadingのリンクです。
    https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.9

メソッドのオーバーロード

メソッドのオーバーロードのサンプルです。

package test1;

class Color1 {
	public String getCount1(int a) {
		return a + "回目";
	}
	public String getCount1(int a,String b) {
		return a + "回目" + b;
	}
	public String getCount1(String b,int a) {
		return "3回目" + b;
	}
}
public class Test1 {
	public static void main(String[] args) {
				
		Color1 c1 = new Color1();		

		System.out.println(c1.getCount1(1)); //1回目
		System.out.println(c1.getCount1(2,"です")); //2回目です
		System.out.println(c1.getCount1("です",0)); //3回目です
	}
}

4,7,10行目がオーバーロードです。メソッド名が同じで引数が異なっています。

4行目は、int型の引数が1つのときに実行されます。
7行目は、int型の引数が1つとString型の引数が1つのときに実行されます。
10行目は、引数の型と数は7行目と同じですが引数の順番が異なっています。

渡す引数によって引数にあったメソッドが実行されます。

 

コンストラクタのオーバーロード

コンストラクタのオーバーロードのサンプルです。

package test1;

class Color {
	String name1;
	
	Color() {
		name1="白";
	}
	
	Color(String name1) {
		this.name1 = name1;
	}
}
public class Test1 {
	public static void main(String[] args) {
		
		Color c1 = new Color();
		System.out.println(c1.name1); //白
				
		Color c2 = new Color("赤");
		System.out.println(c2.name1); //赤
	}
}

6行目と10行目がオーバーロードです。コンストラクタ名が同じで引数が異なるものです。

6行目は、引数がないときに実行されます。
10行目は、String型の引数が1つのときに実行されます。
17行目は、6行目のコンストラクタを実行します。
20行目は、10行目のコンストラクタを実行します。
渡す引数によって引数にあったコンストラクタが実行されます。

関連の記事

Java クラスのサンプル
Java コンストラクタのサンプル
Java クラスの継承のサンプル

△上に戻る