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

박민성님의 프로필 이미지
박민성

작성한 질문수

김영한의 실전 자바 - 기본편

다형성 질문입니다

해결된 질문

작성

·

199

1

Parent parent = new child(); 라고하면 parent가 child의 기능을 가질수 있다는건데,

new child()는 child()의 객체의 참조값을 가지니까 parent가 접근할수있다는것을 이해했는데

parent는 생성자를 안만들어줬는데도 접근할수가있나요?

Parent parent = new Parent(); 같이 객체를 만들어줬을때 저장이되면서 참조값을 parent에 전달한다고 알고있는데 Parent parent = new child(); 는 child의 참조값만 알고 Parent는 모르는거아닌가요? 상속이라고해도 parent는 객체를 안만들어줬지 않나요?

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 박민성님

Q1: Parent parent = new child(); 라고하면 parent가 child의 기능을 가질수 있다는건데,

new child()는 child()의 객체의 참조값을 가지니까 parent가 접근할수있다는것을 이해했는데

parent는 생성자를 안만들어줬는데도 접근할수가있나요?

A1: 상속 관계의 경우 자식을 new로 만들면 부모도 메모리 상에 함께 생성됩니다.

그리고 다음 강의를 복습해보시면 심지어 부모의 생성자도 반드시 호출되는 것을 확인할 수 있습니다.

  1. 상속 -> super - 생성자

 

Q2: Parent parent = new Parent(); 같이 객체를 만들어줬을때 저장이되면서 참조값을 parent에 전달한다고 알고있는데 Parent parent = new child(); 는 child의 참조값만 알고 Parent는 모르는거아닌가요? 상속이라고해도 parent는 객체를 안만들어줬지 않나요?

A2: new Child를 생성하면 참조는 하나이지만 그 안에 Parent도 함께 생성됩니다. 상속 관계에서는 부모도 함께 만들어줍니다. 다음 내용을 복습해주세요 🙂

  1. 상속 -> 상속과 메모리 구조

감사합니다.

박민성님의 프로필 이미지
박민성

작성한 질문수

질문하기