Chaining Constructors

8156 ワード

class Position {
    private int position = 0;
    
    public Position() {
        this.position = 0;
    }

    public Position(int position) {
        this.position = position;
    }
コンストラクション関数のリンクを理解してみましょうか?
  • 0は、一箇所で初期化すれば良い.重複コードをできるだけ削除してください.
  • 定義#テイギ#
    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