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

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

dudejr9614님의 프로필 이미지

작성한 질문수

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

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

업캐스팅 상속문제 부탁드립니다.

해결된 질문

작성

·

44

0

  • 10:29초에
    Class B extends A{
    public B(){ - 이쪽 부분이 상속이 된다고 알려주셨는데

  • 8:12초에
    class B extends A{
    public void pain() { - 에서는 왜 상속이 안되는지 차이점을 잘 모르겠습니다


  • 본인이 태어나기 전에 부모의 기본 생성자를 호출한다"라고 이해를 했는데 왜 8:12초에는
    부모 생성자를 호출을 안하는 건가요?

혹시 생성자 B()가 있어야 부모를 호출할 수 있는건가요?

답변 2

0

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

8분 12초의 코드에는 생성자라는 것 자체가 없습니다. 생성자는 클래스명과 같은 메서드입니다.

 

paint, draw는 자식이 상속받았지만 재정의를 한 것입니다. 상속이 안되는 경우는 없습니다. 다 부모 것을 물려받습니다. 재정의하느냐 하지 않느냐 차이입니다.

0

인프런 AI 인턴님의 프로필 이미지

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

자바에서 상속과 생성자 호출 순서에 대한 질문을 주셨군요. 중요한 개념이니 자세히 설명드리고 관련 답변을 찾아 드리겠습니다.

생성자 호출 순서 및 동작 원리

  1. 상속과 생성자

    • 자바에서 클래스 B가 클래스 A를 상속받는 경우, B의 인스턴스를 생성할 때 무조건 A의 생성자가 먼저 호출됩니다. 이는 모든 자식 클래스가 부모 클래스의 요소를 상속 받기 때문입니다.
    • 부모 클래스를 명시적으로 호출하지 않으면, 자바는 자동으로 부모의 기본 생성자를 호출합니다. 따라서 super();가 생략된 경우에도 부모 생성자를 호출합니다.
  2. 정의된 생성자 유무에 따른 호출

    • B()라는 생성자가 정의된 경우 부모 생성자를 명시적으로 호출할 수 있으며, 이 경우 부모의 기본 생성자가 호출됩니다.
    • 부모 클래스에 기본 생성자가 존재하지 않거나, super(파라미터)처럼 다른 형태의 부모 생성자가 있다면 명시적으로 해당 생성자를 호출해야 합니다.
  3. 메소드 vs 생성자

    • 생성자는 객체의 초기화 시점에 호출되는 코드 블록입니다. 상속 구조에서 생성자는 객체 생성 시 자동으로 호출되며, 부모 클래스의 생성자부터 실행됩니다.
    • 메소드는 객체 생성이 완료된 후에 호출되는 일반 기능 코드 블록입니다. 이는 메소드를 통해 상속과 객체 생성을 직접적으로 연결짓기 어렵도록 합니다.

관련 질문 URL

  1. 자바 상속과 업캐스팅 이해 및 예제
  2. 상속과 생성자 호출 관련 사례

위의 링크에서 생성자 호출 순서와 관련한 더 많은 답변을 확인할 수 있습니다. 각 링크는 상속과 업캐스팅에 대한 다양한 측면을 다루고 있으며, 이번 질문과 유사한 주제를 포함하고 있으니 확인해 보세요.

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