강의

멘토링

로드맵

Inflearn brand logo image

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

작성자 없음

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

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

Java언어 기출문제의 변형

업캐스팅 관련 질문

해결된 질문

작성

·

52

0

2:53

자바에서 업캐스팅 형태로 클래스가 구성되었을 경우, 부모 클래스에 존재하지 않는 메서드를 자식 클래스에서 정의할 수 없다고 배웠습니다.

 

생성자도 이와 동일하게, 업캐스팅에서 부모에 존재하지 않는 생성자를 자식 클래스가 가질수 없는게 맞나요?

그게 맞다면, class C의 생성자는 super(a/3)가 있기 때문에 에러가 발생하지 않는게 맞나요?

 

헷갈리는 부분입니다 ㅠㅠ

답변 2

0

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

정상적으로 됩니다.

문제는 지금 코드(영상 내 3분 04초)에서는 부모의 기본생성자가 없고 파라미터가 있는 생성자가 있습니다.

이 경우에는 부모의 어떤 생성자를 호출할 지 super를 통해 명시적으로 호출해줘야 오류가 발생하지 않습니다.

지금은 부모한테 파라미터 한 개짜리 생성자가 있으니 super(파라미터)를 넣으면 정상적으로 객체가 생성됩니다.

0

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

업캐스팅과 관련된 질문 주셔서 감사합니다. 업캐스팅은 자바에서 객체 지향 프로그래밍의 중요한 개념입니다. 지금 질문하신 내용에 대해 하나씩 설명드리겠습니다.

  1. 메서드와 업캐스팅:

    • 업캐스팅은 부모 클래스 타입의 참조 변수를 사용해 자식 클래스의 객체를 참조하는 것을 의미합니다. 이 경우 부모 클래스에 없는 메서드는 자식 클래스에서 호출할 수 없습니다. 왜냐하면 참조 변수의 타입이 부모 클래스이기 때문에 부모 클래스에 정의된 메서드만 접근할 수 있기 때문입니다.
  2. 생성자와 업캐스팅:

    • 생성자는 메서드와 다르게 호출 방식이 조금 다릅니다. 자식 클래스는 부모 클래스의 생성자를 명시적으로 호출해야 하는 경우 자동으로 부모 클래스의 기본 생성자가 호출됩니다. 그러나 자식 클래스는 자신만의 생성자를 가질 수 있습니다. 따라서 자식 클래스의 생성자는 부모 클래스에 존재하지 않아도 됩니다. 중요한 것은, 자식 생성자가 부모 생성자를 호출할 수 있어야 한다는 것입니다.
  3. super() 관련 에러:

    • 상속 관계에서 자식 클래스의 생성자는 반드시 부모 클래스의 생성자를 호출합니다. super()를 명시적으로 호출하지 않으면 기본적으로 부모 클래스의 기본 생성자가 호출됩니다. 자식 클래스에서 특정 파라미터를 가진 부모 생성자를 호출하려면 해당 생성자를 명시적으로 호출해야 합니다. super(a/3) 같은 형태가 있다면, 이는 부모 클래스의 특정 파라미터 생성자를 호출하려고 시도하는 것입니다. 이 경우 해당 생성자가 실제로 부모 클래스에 존재해야만 합니다. 만약 존재하지 않는다면 컴파일 에러가 발생할 것입니다.

자세한 사항은 아래 링크들을 참고하시면 유용할 것입니다:

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

작성자 없음

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

질문하기