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

김도현님의 프로필 이미지
김도현

작성한 질문수

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

다형성과 메서드 오버라이딩

다형성1 과목 개념정리 질문입니다

작성

·

345

·

수정됨

0

[질문 내용]
제가 지금 이해한 내용으로는

Parent parent = new child(); 가 있을때

 

메모리에는 Child를 기준으로 상위 부모 클래스만 메모리에 적재되고 (편의상 Child 메모리라고 하겠습니다),

parent의 참조 주소는 생성된 Child 메모리 안의 Parent 클래스를 참조하며,


parent의 멤버변수는 Parent 클래스의 멤버변수만 가질 수 있고,


오버라이딩된 메소드가 존재한다면 무조건 오버라이딩된 메소드가 우선권을 가진다

라고이해했는데, 덧붙일 개념들이 혹시 있을까요?

아, 그리고 만약 오버라이딩된 메소드가 부모클래스에서 실행할 수 없는 메소드라면 어떻게되는지도 궁금합니다.
(혹시, 오버라이딩된 메소드가 부모클래스에서 실행되지않을 가능성은 아예 없나요?)

답변 2

1

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

안녕하세요. 김도현님

생각하신 내용이 맞습니다.

추가로 질문하신 부분은 부모 클래스에 정상적으로 존재하는 메서드여야 오버라이딩이 가능합니다.

감사합니다.

 

김도현님의 프로필 이미지
김도현
질문자

부모클래스와 자식클래스를 개발하는 개발자가 서로 다르다고 가정하고,

 

자식클래스에 int A = 10; 이라는 멤버변수가 추가되었고 ,
부모클래스의 메소드 Alpha 를 오버라이딩하여 int A를 출력하는 로직을 작성했을때,

이를 부모클래스를 담당한 개발자가 모르는상태로 Alpha를 사용했다고 가정하면

1. 객체지향을 벗어난 작동방식이 아닌지

2. 부모클래스는 자식클래스의 멤버변수에 접근할 수 없다고 알고있는데, 위와같은 경우에는 부모클래스가 자식클래스의 멤버변수에 간접적으로 접근하는건 아닌지

2-1 맞다면 이 접근방식이 괜찮은건지

궁금합니다! ㅜㅜ

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

안녕하세요. 김도현님

메서드 오버라이딩은 부모 타입이 아니라 자식 타입을 호출하는 것이 목적입니다.

따라서 오버라이딩 시에 자식 타입에 있는 데이터도 함께 사용하는 것이 맞습니다 🙂

감사합니다.

0

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

김도현님의 다형성에 관련된 질문 내용을 잘 이해하였습니다. 질문하신 내용에 대해 이미 강사님이 자세히 답변해 주신 경우가 있어 해당 답변 URL을 공유드립니다.

‘다형성 질문입니다’에서 다형성의 개념과 객체 생성 시 부모와 자식 클래스의 참조에 대해 설명하고 있습니다. 이 내용을 확인하시면 도움이 될 것입니다.

강사님께서는 상속 관계에서 자식 클래스를 생성하면 부모 클래스도 함께 메모리에 생성된다고 설명합니다. 그리고 ‘상속 -> super - 생성자’와 ‘상속 -> 상속과 메모리 구조’ 두 부분을 복습하면 더 좋은 이해를 할 수 있을 것이라고 조언하셨습니다.

이 외에도 ‘상속 관련해서 질문 있습니다.‘에서 상속과 인스턴스, 메모리 구조에 대한 설명이 있으니 참고하시면 좋을 것 같습니다.

또한, ‘다운캐스팅 질문’에서는 다형성과 캐스팅에 대한 설명이 있으니 관련 내용을 확인해 보시는 것도 유익할 것입니다.

각 링크의 답변을 참고하시면 다형성에 대한 이해를 더욱 넓히실 수 있을 것입니다.

김도현님의 프로필 이미지
김도현

작성한 질문수

질문하기