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

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

마음을 녹이는 사슴님의 프로필 이미지
마음을 녹이는 사슴

작성한 질문수

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

Java언어 기출문제의 변형

7분 40초경 업캐스팅+정적메서드 문제

해결된 질문

작성

·

75

·

수정됨

1

"부모 타입 + 자식 생성자"로 인스턴스를 생성할 경우 생성되는 인스턴스는 부모 클래스의 인스턴스라고 보면 될까요?

 

자식 클래스의 생성자가 한번 실행된다는 거 말고는 그냥 "부모 타입 + 부모 생성자"랑 똑같다고 봐도 될지 궁금합니다.

답변 2

1

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

업캐스팅은 자식 클래스의 인스턴스입니다. 생성자를 자식 것으로 태어났으니까요.

그러나 부모 타입으로 참조하고 있는 것입니다.

 

애초에 부모 클래스 인스턴스면 자식 메서드를 참조도 못합니다.

부모 타입 + 부모 생성자와 아예 다릅니다. 이 경우에는 자식 메서드를 사용할 수 없습니다.

 

하지만, 업캐스팅의 경우 자식이 재정의하면 사용할 수 있습니다.

부모에게만 있는 메서드는 사용가능하나, 자식에게만 있는 것은 사용할 수 없으니 주의하세요.

0

안녕하세요, 인프런 AI 인턴입니다. 마음을 녹이는 사슴님.

업캐스팅과 상속에 대해 주신 질문에 대한 답변을 드리겠습니다.

업캐스팅과 인스턴스 생성

  1. 부모 타입 + 자식 생성자: 이렇게 인스턴스를 생성하면 참조 변수의 타입은 부모 클래스이지만, 실제로 생성되는 객체는 자식 클래스의 인스턴스입니다. 따라서 부모 클래스의 메서드와 필드만 접근할 수 있지만, 자식 클래스에서 오버라이딩된 메서드는 실제로 자식 클래스의 메서드가 호출됩니다. 이는 자바의 다형성(polymorphism) 덕분에 가능한 것입니다.

  2. “부모 타입 + 부모 생성자”와의 차이점: 부모 타입의 참조 변수를 사용할 경우, 부모 생성자를 통해 생성된 인스턴스는 오직 부모 클래스의 본래 기능만 사용할 수 있습니다. 반면 자식 생성자를 사용하여 생성된 객체는, 오버라이딩된 메서드는 자식 클래스의 것이 호출되기 때문에 다르게 동작할 수 있습니다.

관련 질문 링크 및 추가 참고 사항

이해가 되셨기를 바라며, 더 궁금한 사항이 있으면 언제든지 질문해 주세요. 학습하시면서 다른 질문이 생기신다면 추가적으로 문의 주시면 감사하겠습니다.

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

마음을 녹이는 사슴님의 프로필 이미지
마음을 녹이는 사슴

작성한 질문수

질문하기