Chaining Constructors
8156 ワード
class Position {
private int position = 0;
public Position() {
this.position = 0;
}
public Position(int position) {
this.position = position;
}
コンストラクション関数のリンクを理解してみましょうか?Constructor chainは、コンストラクション関数を連続的に呼び出します.
this()
同じクラス内の作成者をキーワードで連続呼び出しsuper()
キーワードを使用して親からジェネレータを呼び出すpublic class Person {
private final String firstName;
private final String middleName;
private final String lastName;
private final int age;
//getters, equals and hashcode
}
ないかもmiddleName
public Person(String firstName, String middleName, String lastName, int age) {
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
this.age = age;
}
public Person(String firstName, String lastName, int age) {
this(firstName, null, lastName, age);
}
このジェネレータにはmiddlenameは含まれていません.ここではthis()キーを使用します.このキーは、コンストラクション関数の最初の行に常に表示される必要があります.クラス内では、ジェネレータの順序は重要ではありません.別のクラスのチェーンジェネレータの例
public class Customer extends Person {
private final String loyaltyCardId;
//getters, equals and hashcode
}
public Customer(String firstName, String lastName, int age, String loyaltyCardId) {
this(firstName, null, lastName, age, loyaltyCardId);
}
public Customer(String firstName, String middleName, String lastName, int age, String loyaltyCardId) {
super(firstName, middleName, lastName, age);
this.loyaltyCardId = loyaltyCardId;
}
1番目のコンストラクタは、this()
キーワードを使用して2番目のコンストラクタに接続されます.1編2番目の生成者が使用した
super()
キーワード.メリットとデメリット
重複を避ける.DRY(Don't Repeat Yourself).
読みやすさを向上させる.
https://www.baeldung.com/java-chain-constructors
Reference
この問題について(Chaining Constructors), 我々は、より多くの情報をここで見つけました https://velog.io/@injoon2019/Chaining-Constructorsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol