인프런 커뮤니티 질문&답변
java:상속을 정리하는 문제 10개(유형5)
해결된 질문
작성
·
104
답변 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();를 사용해야 하며, 부모 클래스에 기본 생성자가 없을 경우 이를 명시적으로 정의해야 합니다.
유사한 질문을 통해 상속과 생성자 호출에 관한 더 많은 정보와 예시를 얻고 싶으시면, 아래의 링크를 참고해 보실 수 있습니다:
- 자바 기출변형 문제 질문 - 생성자 호출과 관련된 설명이 포함된 질문입니다.
고은채님의 이해를 돕고자 유사한 질문에 대한 정보를 제공하며, 지식공유자님의 기존 답변을 참고하여 문제를 해결하는데 도움이 되고자 합니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





