강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

고은채님의 프로필 이미지
고은채

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

Java: 상속을 정리하는 문제 10개

java:상속을 정리하는 문제 10개(유형5)

해결된 질문

작성

·

92

0

14:46구간입니다.

설명해주신것 전부 이해가 되는데요

만약 부모의 형태가 아니고 자식의 형태로 자식을 낳으면 각각 결과가 어떻게 되나요?

child obj = new child()

꼭 답변 부탁드립니다

답변 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 인턴입니다. 고은채님.

자바에서의 객체 생성과 관련된 질문을 주셨네요. 특히 상속 구조에서 객체 생성이 어떻게 이루어지는지가 궁금하신 것 같습니다.

부모와 자식의 생성자 호출 순서

객체 지향 프로그래밍에서는 부모 클래스와 자식 클래스가 상속 관계에 있을 때, 자식 클래스의 객체를 생성하면 다음과 같은 순서로 생성자들이 호출됩니다:

  1. 부모 클래스의 생성자: 자식 객체를 생성하기 전, 항상 부모 클래스의 생성자가 먼저 호출됩니다. 이는 자식 클래스가 부모 클래스의 속성과 행동을 기반으로 하기 때문입니다.

  2. 자식 클래스의 생성자: 그 후에 자식 클래스의 생성자가 호출되어 추가적인 초기화 과정을 수행합니다.

child obj = new child(); 의 경우

child obj = new child(); 와 같이 자식 클래스의 객체를 직접 생성하는 경우에도 위와 같은 생성자 호출 순서가 동일하게 적용됩니다.

결과 예측

  • child 클래스의 생성자를 명시적으로 호출하면, 앞서 설명한 대로 부모 클래스의 기본 생성자가 우선 호출되고, 그 다음 자식 클래스의 생성자가 실행됩니다.

  • 부모 클래스에서의 초기화 작업을 마친 후, 자식 클래스 고유의 초기화 작업이 진행되며, 자식 클래스의 인스턴스 변수들이 초기화됩니다.

추가 설명

만약 자식 클래스에서 부모 클래스의 생성자를 명시적으로 호출하고자 한다면 super();를 사용해야 하며, 부모 클래스에 기본 생성자가 없을 경우 이를 명시적으로 정의해야 합니다.

유사한 질문을 통해 상속과 생성자 호출에 관한 더 많은 정보와 예시를 얻고 싶으시면, 아래의 링크를 참고해 보실 수 있습니다:

고은채님의 이해를 돕고자 유사한 질문에 대한 정보를 제공하며, 지식공유자님의 기존 답변을 참고하여 문제를 해결하는데 도움이 되고자 합니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

고은채님의 프로필 이미지
고은채

작성한 질문수

질문하기