반응형
객체가 생성 되기 전에 해당 인스턴스의 메서드를 사용할 수 있다는 것에 의문이 들었다.
결론은 객체가 생성되는 과정에서 생성자 실행 중에도 인스턴스 메서드를 호출할 수 있다.!
왜 가능한지?
- 생성자가 실행 될 때, 객체는 이미 메모리에 할당되어 있다.
- 다만 객체의 초기화 과정이 진행중일 뿐이다.
- 생성자가 실행되는 동안 해당 객체의 this 참조는 이미 존재하기 때문에 같은 인스턴스의 매서드를 호출 할 수 있다.
public class Example {
private final String value;
public Example() {
this.value = "initialized";
processValue(); // 호출 가능
}
private void processValue() {
System.out.println("Value: " + value);
}
}
주의할 점
- 초기화 되지 않은 필드를 사용하는 메서드는 호출하지 않도록 주의해야한다.
public class Example {
private final String value;
public Example() {
processValue(); // 여기서 value를 사용하면 초기화되지 않은 상태!
this.value = "initialized";
}
private void processValue() {
System.out.println("Value: " + value); // null 출력됨
}
}
반응형