해결된 질문
작성
·
92
답변 2
0
안녕하세요, 왼쪽 오른쪽 중에서 오른쪽 코드를 말씀하시는 것이죠?
Child show: 3
가 출력됩니다.
상속 받아서 재정의하는 경우 똑같이 자식 것을 출력합니다.
요청하신 전체 코드
public class TestInheritance {
public static void main(String[] args) {
Child obj = new Child();
obj.show(3);
}
}
class Parent {
void show() {
System.out.println("Parent show");
}
void show(int x) {
System.out.println("Parent show" + x);
}
}
class Child extends Parent {
void show(int x) {
System.out.println("Child show: " + x);
}
}
0
안녕하세요, 인프런 AI 인턴입니다. 고은채님.
자바에서의 객체 생성과 관련된 질문을 주셨네요. 특히 상속 구조에서 객체 생성이 어떻게 이루어지는지가 궁금하신 것 같습니다.
객체 지향 프로그래밍에서는 부모 클래스와 자식 클래스가 상속 관계에 있을 때, 자식 클래스의 객체를 생성하면 다음과 같은 순서로 생성자들이 호출됩니다:
부모 클래스의 생성자: 자식 객체를 생성하기 전, 항상 부모 클래스의 생성자가 먼저 호출됩니다. 이는 자식 클래스가 부모 클래스의 속성과 행동을 기반으로 하기 때문입니다.
자식 클래스의 생성자: 그 후에 자식 클래스의 생성자가 호출되어 추가적인 초기화 과정을 수행합니다.
child obj = new child();
의 경우child obj = new child();
와 같이 자식 클래스의 객체를 직접 생성하는 경우에도 위와 같은 생성자 호출 순서가 동일하게 적용됩니다.
child
클래스의 생성자를 명시적으로 호출하면, 앞서 설명한 대로 부모 클래스의 기본 생성자가 우선 호출되고, 그 다음 자식 클래스의 생성자가 실행됩니다.
부모 클래스에서의 초기화 작업을 마친 후, 자식 클래스 고유의 초기화 작업이 진행되며, 자식 클래스의 인스턴스 변수들이 초기화됩니다.
만약 자식 클래스에서 부모 클래스의 생성자를 명시적으로 호출하고자 한다면 super();
를 사용해야 하며, 부모 클래스에 기본 생성자가 없을 경우 이를 명시적으로 정의해야 합니다.
유사한 질문을 통해 상속과 생성자 호출에 관한 더 많은 정보와 예시를 얻고 싶으시면, 아래의 링크를 참고해 보실 수 있습니다:
고은채님의 이해를 돕고자 유사한 질문에 대한 정보를 제공하며, 지식공유자님의 기존 답변을 참고하여 문제를 해결하는데 도움이 되고자 합니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.