Java Constructor
3383 ワード
Overloadingについて
オーバーロードとは、複数のパラメータタイプ、個数、順序が異なることを宣言するジェネレータです.
上のコードに基づいて、パラメータのないデフォルトジェネレータが作成されます.
これは、パラメータを持つ他のジェネレータを作成する場合、コンパイラはデフォルトのジェネレータを作成しないため、個別に宣言する必要があるためです.
ConstructorClass(String color, String job)
ConstructorClass(String color, String job, int age)
上のコードから見ると,ジェネレータごとにパラメータタイプ,数が異なるため,オーバーロードが必要である.
過負荷ではなくコードを見てみましょう.
String typeはパラメータ名のみ変更しました
オーバーロードの場合、パラメータ名は重要ではありません.
Stringタイプのパラメータ名の順序が異なることは、オーバーロードを意味しません
初期化内容が似ているジェネレータは、他のジェネレータthis()を呼び出して解決する重複コードを生成する可能性があります.
すなわち、汎用実行コードとして削除する
パラメータは、共通実行コードで受信したパラメータに基づいて呼び出されます.
オーバーロードとは、複数のパラメータタイプ、個数、順序が異なることを宣言するジェネレータです.
public class ConstructorClass {
String name = "sally";
String color;
String job;
int age;
ConstructorClass() {}
ConstructorClass(String color) {
this.color = color;
}
ConstructorClass(String color, String job) {
this.color = color;
this.job = job;
}
ConstructorClass(String color, String job, int age) {
this.color = color;
this.job = job;
this.age = age;
}
}
Constructor Class(){}と同様に、パラメータのないジェネレータをデフォルトジェネレータと呼びます.基本ジェネレータはコンパイラによって作成され、単独で作成する必要はありません.上のコードに基づいて、パラメータのないデフォルトジェネレータが作成されます.
これは、パラメータを持つ他のジェネレータを作成する場合、コンパイラはデフォルトのジェネレータを作成しないため、個別に宣言する必要があるためです.
ConstructorClass(String color) {
this.color = color;
}
ConstructorClass(String color, String job) {
this.color = color;
this.job = job;
}
ConstructorClass(String color, String job, int age) {
this.color = color;
this.job = job;
this.age = age;
}
ConstructorClass(String color)ConstructorClass(String color, String job)
ConstructorClass(String color, String job, int age)
上のコードから見ると,ジェネレータごとにパラメータタイプ,数が異なるため,オーバーロードが必要である.
過負荷ではなくコードを見てみましょう.
ConstructorClass(int age, String job, String color) {
this.color = color;
this.job = job;
this.age = age;
}
ConstructorClass(int age, String color, String job) {
this.color = color;
this.job = job;
this.age = age;
}
上のコードを見ると、パラメータのタイプはint、Stringで、順序は同じで、パラメータの個数も3つ同じです.String typeはパラメータ名のみ変更しました
オーバーロードの場合、パラメータ名は重要ではありません.
Stringタイプのパラメータ名の順序が異なることは、オーバーロードを意味しません
ConstructorClass(String name, String color) {}
ConstructorClass(String color, String name) {}
上のコードも同じですが、パラメータのタイプと数が同じなので、オーバーロードはありません.初期化内容が似ているジェネレータは、他のジェネレータthis()を呼び出して解決する重複コードを生成する可能性があります.
ConstructorClass(String color) {
this(color, null, 0);
}
ConstructorClass(String color, String job) {
this(color,job,0);
}
ConstructorClass(String color, String job, int age) {
this.color = color;
this.job = job;
this.age = age;
} //공통실행 코드
初期化内容はジェネレータに集中して記入されます.すなわち、汎用実行コードとして削除する
ConstructorClass(String color, String job, int age) {
this.color = color;
this.job = job;
this.age = age;
}
他の生成者は、この呼び出しを使用して汎用実行コードを実行します.パラメータは、共通実行コードで受信したパラメータに基づいて呼び出されます.
ConstructorClass(String color) {
this(color, null, 0);
}
ConstructorClass(String color, String job) {
this(color,job,0);
}
これを使用して別のジェネレータを呼び出す場合は、ジェネレータの最初のジェネレータに来なければなりません.ConstructorClass(String color) {
System.out.println("color");
this(color, null, 0);
}
ConstructorClass(String color, String job) {
System.out.println("color, job");
this(color,job,0);
}
上のコードのようにthisを呼び出す前に別の実行文を書くとエラーになりますConstructorClass(String color) {
this(color, null, 0);
System.out.println("color");
}
ConstructorClass(String color, String job) {
this(color,job,0);
System.out.println("color, job");
}
上のコードは問題のないコードです.this呼び出し文はジェネレータの最初の行にあるからです.Reference
この問題について(Java Constructor), 我々は、より多くの情報をここで見つけました https://velog.io/@jooog/asdfテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol