目次
サンプル | オーバーロードとは |
コンストラクタのオーバーロード |
オーバーロードとは
・オーバーロードとは、1つのクラスの中でメソッド名またはコンストラクタ名が同じで引数が異なるものです。
(引数の型が異なる、引数の数が異なる、引数の順番が異なる)
・渡す引数によって、引数にあったメソッドまたはコンストラクタが実行されます。
・メソッド名、引数の型、引数の数の組み合わせをシグネチャ(signature)と呼びます(シグネチャで判別される)。
・似た名前にオーバーライドがありますがそれとは別です。
Java オーバーライドのサンプル
・以下は、Oracleの8.4.9. Overloadingのリンクです。
https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.9
オーバーロードのサンプル
4,7,10行目がオーバーロードです。メソッド名が同じで引数が異なっています。
package test1;
class Color1 {
public String getCount1(int a) {
return a + "ABC";
}
public String getCount1(int a,String b) {
return a + "ABC" + b;
}
public String getCount1(String b,int a) {
return "ABC" + b;
}
}
public class Test1 {
public static void main(String[] args) {
Color1 c1 = new Color1();
System.out.println(c1.getCount1(1)); // 1ABC
System.out.println(c1.getCount1(2,"Z")); // 2ABCZ
System.out.println(c1.getCount1("Z",0)); // ABCZ
}
}
4行目は、int型の引数が1つのときに実行されます。
7行目は、int型の引数が1つとString型の引数が1つのときに実行されます。
10行目は、引数の型と数は7行目と同じですが引数の順番が異なっています。
コンストラクタのオーバーロード
6行目と10行目がオーバーロードです。コンストラクタ名が同じで引数が異なるものです。
package test1;
class Color {
String name1;
Color() {
name1="blue";
}
Color(String name1) {
this.name1 = name1;
}
}
public class Test1 {
public static void main(String[] args) {
Color c1 = new Color();
System.out.println(c1.name1); //blue
Color c2 = new Color("red");
System.out.println(c2.name1); //red
}
}
6行目は、引数がないときに実行されます。
10行目は、String型の引数が1つのときに実行されます。
17行目は、6行目のコンストラクタを実行します。
20行目は、10行目のコンストラクタを実行します。
point
渡す引数によって引数にあったコンストラクタが実行されます。
関連の記事