해결된 질문
작성
·
483
1
우선 강의 에서는 생성자를 아래와 같이 구성하여 진행하였습니다
public Member(String username) {
this.username = username; // 2번 생성자 호출
}
public Member(String username, int age, Team team) {
this.username = username;
this.age = age;
if (team != null) {
changeTeam(team);
}
}
순차적으로 각각 1번과 2번 생성자로 구분한다고 가정하였을 경우 강의 교안에서는 아래와 같은 코드로 구성되어 있습니다.
public Member(String username) {
this(username, 0); // 2번 생성자 호출
}
public Member(String username, int age) {
this(username, age, null); // 3번 생성자 호출
}
public Member(String username, int age, Team team) {
this.username = username;
this.age = age;
if (team != null) {
changeTeam(team);
}
}
논리적으로 해석해보자면 2번째 생성자는 username과 age만 값이 세팅되므로 team에 대한 값은 null로 세팅하는게 맞다 라고 판단이 되었으나,
1번째 생성자는 username만 초기화되고 age에 대한 값만 0으로 초기화 해주지만 team에 대한 값은 들어오지 않았으니 null로 처리해줘야 하는게 아닌가? 하는 의문이 들었습니다.
public Member(String username) {
this(username, 0, null); // 2번 생성자 호출
}
위와 같이 1번 생성자의 this() 초기화에서는 username만 들어온다면 2번째 생성자와 같이 team에대한 값을 null로 함께 초기화 해야 맞는것이 아닌가 의문이 듭니다.
와 제가 간과한부분이 있었군요.
저렇게 생성자를 선언 하는게 맞네요
인스턴스 생성시 1번 생성자 호출시 2번을 호출하면서 3번까지 순차적으로 호출이되니까 자동으로 username이외의 값은 0과 null로 초기화되고
인스턴스 생성시 2번 생성자를 호출하면 3번을 호출하니 username과 age 이외의 team만 null로 처리가 되네요.
감사합니다!