• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

23.12.22 12:40 작성 23.12.22 12:45 수정 조회수 230

0

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

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

 

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

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


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


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

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

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

답변 2

·

답변을 작성해보세요.

1

안녕하세요. 김도현님

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

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

감사합니다.

 

김도현님의 프로필

김도현

질문자

2023.12.23

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

 

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

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

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

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

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

궁금합니다! ㅜㅜ

안녕하세요. 김도현님

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

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

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.22

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

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

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

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

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

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

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