인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

작성자 없음

작성자 정보가 삭제된 글입니다.

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

유튜브 24년 3회 대비영상 질문드립니다.

해결된 질문

작성

·

58

·

수정됨

0

유튜브 정보처리기사 24년 3회 대비 (C언어 반복문, 전위 후위 연산자, Java 업캐스팅과 상속)
에서 21: 40 문제관련 질문드립니다.

 

 

Main()내의
child parent = new Child() 는

'자식이 나오려면 반드시 부모가 먼저 나오고 자식이 나와야 한다' 로 암기하고 있는데

그렇다면 실행 순서가


1. Parent() 실행 - "부모기본생성자"출력

  1. Child() 실행

  2. super로 Parent('홍길동',30) 실행
    이후 쭉~~~

이렇게 되어서 출력결과가

부모기본생성자

부모기본생성자

이름=홍길동, 나이 =30

자식 기본생성자 호출됨

부모클래스의 메서드

로 나와야 하는거 아닌가요? 상속 너무 어렵습니다...

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

  1. 21:40은 Child child = new Child()입니다. 질문에서 변수를 parent라고 하셨습니다.

  2. 명시적으로 부모의 다른 생성자를 불렀으면 기본 생성자를 부르지 않습니다. 다른 생성자에서는 기본 생성자를 호출할 수는 있습니다.

     

0

안녕하세요, 인프런 AI 인턴입니다. 푸른만두님.

Java의 업캐스팅과 생성자 호출 관련 질문을 주셨군요. 객체 지향 프로그래밍에서 상속과 업캐스팅은 매우 중요한 개념이며, 이해하기가 쉽지 않을 수 있습니다. 질문에서 주신 코드 실행 방식을 정리해보겠습니다.

주요 개념 설명

  1. 생성자 호출 순서: 자바에서 객체 생성 시, 항상 부모 클래스의 생성자가 먼저 호출됩니다. 이는 Java의 상속 계층 구조를 유지하기 위한 기본 규칙입니다. 따라서 Parent() 생성자가 먼저 실행된 후, Child() 생성자가 호출됩니다.

  2. 업캐스팅에서의 생성자 호출: Parent parent = new Child(); 구문은 자식 클래스인 Child의 객체를 생성하되, 참조 타입은 부모 클래스 Parent로 설정하는 형태입니다. 이때 호출되는 생성자는 Child의 생성자이지만, 그 전에 Parent의 생성자가 실행됩니다.

실행 과정 설명

  • new Child() 를 호출했을 때:
    1. Parent의 기본 생성자가 호출되어 "부모기본생성자"를 출력합니다.
    2. 이후 Child 클래스의 생성자가 호출됩니다.
    3. Child의 생성자에서 super로 명시된 Parent('홍길동', 30) 생성자 호출이 이어져 "이름=홍길동, 나이=30"을 출력합니다.
    4. 그 후, "자식 기본생성자 호출됨"이 출력됩니다.
    5. 마지막으로 호출된 메서드가 부모 클래스의 메서드라면 "부모클래스의 메서드"가 출력됩니다.

혼동되는 점 피하기

부모 생성자 호출 후 자식 생성자가 호출되며, 자식 클래스의 생성자에서 부모 클래스의 명시적 생성자를 부르는 경우 부모의 다른 생성자가 호출됩니다. 이에 대한 더 자세한 내용은 다음 링크들을 참고해보세요:

이 설명이 푸른만두님의 이해에 도움이 되기를 바라며, 추가적으로 궁금한 점이 있다면 언제든 질문해 주세요.

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

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기