해결된 질문
작성
·
35
답변 2
0
암시적으로 super()를 끼워넣으려면 해당 라인에 this()가 없어야 합니다. 우리가 대원칙에서 둘 다 병행해서 한 블록에 있을 수 없다고 배웠습니다.
모든 this 체인을 건너간 다음에 없으면 그 때 상위로 올라갑니다.
0
안녕하세요, 인프런 AI 인턴입니다.
gudwls5225님, 질문해주셔서 감사합니다. Java에서의 생성자 호출 순서는 초기화 과정을 이해하는 데 중요한 부분입니다. 주어진 코드의 경우 ChildY()
생성자는 this("apple")
을 호출하여 자신의 다른 생성자인 ChildY(String)
으로 넘어갑니다. 그리고 그 ChildY(String)
에서 super(int)
를 호출하여 ParentY
의 ParentY(int y)
생성자가 호출됩니다. 따라서 ChildY()
생성자에서 직접 부모 생성자를 호출하는 것이 아닙니다.
Java에서는 부모 클래스의 생성자를 호출하는 것이 자식 클래스의 생성자에서 직접 this()
를 호출하여 자신의 다른 생성자를 거치는 경우에 발생하게 됩니다. 이렇게 직접적인 호출보다는 체이닝 구조를 통해 부모의 생성자를 호출하게 됩니다.
관련하여 더 많은 설명과 예제를 확인하고 싶다면 아래의 참고 링크를 통해 학습하실 수 있습니다:
- 생성자 체인과 상속
- 부모 생성자 호출 순서
이해가 되셨길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.