inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

업캐스팅 (부모 형태, 자식 생성자)

업캐스팅 문제예시5 & 업캐스팅 문제 예시 6

7

radi_js91

작성한 질문수 2

0

업캐스팅 문제 예시 5번문제와 6번 문제 질의입니다.

  1. 5번 문제에서 최초 A b = new B(1) 에서 부모 기본생성자를 방문하므로 "생성자 of A" 출력

  2. 그다음으로 자식 기본생성자를 방문하므로 "생성자 BB1" 출력

 

3. 그러나 6번 문제에서는 최초 A b = new B(1) 로 5번 문제와 동일한 형태의 생성자가 존재하지만 부모의 기본 생성자인 A()가 호출되지 않아서 "생성자 of A"가 출력되지 않았습니다.

-> 혹시 어떤 부분이 다르기에 부모의 기본생성자가 호출되지 않은건가요?

 

감사합니다.

python java c 정보처리기사 정보처리산업기사

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. radi_js91님.

업캐스팅에서의 생성자 호출 순서에 관한 질문을 주셨군요! 생성자 호출 순서를 이해하는 것은 상속과 관련한 중요한 개념입니다. 특히, 생성자의 오버로딩과 super 키워드의 사용에 따른 차이를 이해하는 것이 핵심입니다.

생성자 호출 순서의 이해

  1. 5번 문제:

    • A b = new B(1); 에서 B 클래스의 생성자가 호출됩니다.
    • 만약 super() 구문이 자식 생성자에 명시되지 않았다면 자바 컴파일러는 부모의 기본 생성자 A()를 자동으로 호출합니다. 그래서 부모 클래스의 기본 생성자가 호출되어 “생성자 of A”가 출력된 것입니다.
  2. 6번 문제:

    • 동일하게 A b = new B(1); 에서 시작하지만, 해당 문제에서는 B 클래스의 생성자가 super(파라미터) 와 같이 부모 클래스의 특정 생성자를 명시적으로 호출하는 경우입니다.
    • 따라서, 부모의 A(int a) 와 같은 매개변수가 있는 생성자를 호출하게 되며, 기본 생성자 A()는 호출되지 않습니다. 이것이 두 문제의 근본적인 차이입니다.

예시 코드 설명

아래는 관련된 개념을 이해하는 데 도움이 될 수 있는 예시 코드입니다:

class A {
    public A() {
        System.out.println("생성자 of A");
    }

    public A(int a) {
        System.out.println("생성자 of AA" + a);
    }
}

class B extends A {
    public B(int b) {
        super(b); // 매개변수가 있는 부모 생성자 호출
        System.out.println("생성자 BB" + b);
    }
}

public class Test {
    public static void main(String[] args) {
        A b = new B(1); // 생성자 호출
    }
}

출력 결과

생성자 of AA1
생성자 BB1

super(b);가 부모 클래스의 A(int a) 생성자를 호출하면서 기본 생성자 A()는 호출되지 않는 것을 보여줍니다.

참고할 수 있는 링크

아래 링크들에서 유사한 질문과 더 깊은 설명을 확인할 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

radi_js91

와...바로 이해했습니다.감사합니다.

V1.2 VS V.091

0

10

1

split('T')일때는 T만 제거되는거고 공백은 제거되지 않는 건가요?

0

13

1

파이썬 언어 업데이트, 언어별 학습자료 업데이트

0

19

2

C, java, python 언어 기출문제 강의 질문

0

12

1

1:26 에서 반복문 i[1] 이니까 0 다음 두번째 항목들 아닌가요

0

15

2

d

0

17

2

출력값

0

19

2

(기출) 2023년 3회 코드해석 문제의 1:10입니다.

0

17

2

23년도 2회 c언어 0:03 n[(i+6)%5] 도 가능한건가요?

0

17

2

정처기 질문

0

33

2

자식 기본 생성자 출력 조건

0

23

2

부모 및 자식 기본생성자 호출

0

25

2

포인터 16강 9:44

0

23

1

6강 17:50

0

30

2

6강 11:37

0

30

2

08:30 이중포인터 질문

0

30

1

6강 5:15

0

34

1

5강 5:45

0

33

2

전체적으로 답을 먼저 알려주지 마세요..

0

44

2

업캐스팅 문제 예시 5

0

55

2

(기출) 2025년 2회 이론 파트

0

47

2

26년 1회실기

0

58

2

강의 자료

0

45

2

27:15 break 출력

0

41

2