English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
オーバーロード多態性を実現するメカニズムであり、あるクラスには同じ名前の異なる引数を持つ二つのメソッドが含まれています。
このメソッドが何時呼び出されても、メソッド本体は引数に基づいてメソッド呼び出しにバインドされます。
メソッドと同様に、コンストラクタもオーバーロードできます。つまり、異なる引数を持つ複数のコンストラクタを書くことができます。
また、インスタンス化時に渡されたパラメータに基づいて、対応するコンストラクタが呼び出されます。
public class Sample{ public Sample(){ System.out.println("Hello how are you"); } public Sample(String data){ System.out.println(data); } public static void main(String args[]){ Sample obj = new Sample("Tutorialspoint"); } }
出力結果
Tutorialspoint
通常のコンストラクタと同様に、エnumのコンストラクタをオーバーライドすることもできます。つまり、コンストラクタには異なる引数を持つことができます。
以下Javaプログラムは、エnumのコンストラクタのオーバーロードを示しています。
import java.util.Arrays; enum Student { Krishna("Krishna", "kasyap", "Bhagavatula"), Ravi("Ravi", "Kumar", "pyda"), Archana("Archana", "devraj", "mohonthy"); private String firstName; private String lastName; private String middleName; private Student(String firstName, String lastName, String middlename){ this.firstName = firstName; this.lastName = lastName; this.middleName = middleName; } private Student(String name) { this(name.split(" ")[0], name.split(" ")[1], name.split(" ")[2]); } } public class ConstructorOverloading{ public static void main(String args[]) { Student stds[] = Student.values(); System.out.println(Arrays.toString(stds)); } }
出力結果
[Krishna, Ravi, Archana]