Chaining Constructors

June·2022년 2월 15일
0

우테코

목록 보기
7/84
post-custom-banner
class Position {
    private int position = 0;
    
    public Position() {
        this.position = 0;
    }

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

constructor chaining에 대해서 알아볼까요?

  • 0으로 초기화는 한 군데서만 해주면 좋을 것 같아요. 중복 코드는 최대한 제거해주세요!

정의

Constructor chaining은 생성자들을 연속적으로 부르는 것이다.

  • 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);
}

이 생성자는 middle name이 들어가지 않았다. 여기서 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;
}

첫 번째 생성자는 this() 키워드를 이용해서 두 번째 생성자에 연결하고 있다.

한 편 두 번째 생성자는 super() 키워드를 이용하고 있다.

장단점

중복을 피할 수 있다. DRY(Don't Repeat Yourself).
가독성을 향상 시켜준다.

https://www.baeldung.com/java-chain-constructors

post-custom-banner

0개의 댓글