작성
·
345
·
수정됨
0
[질문 내용]
제가 지금 이해한 내용으로는
Parent parent = new child(); 가 있을때
메모리에는 Child를 기준으로 상위 부모 클래스만 메모리에 적재되고 (편의상 Child 메모리라고 하겠습니다),
parent의 참조 주소는 생성된 Child 메모리 안의 Parent 클래스를 참조하며,
parent의 멤버변수는 Parent 클래스의 멤버변수만 가질 수 있고,
오버라이딩된 메소드가 존재한다면 무조건 오버라이딩된 메소드가 우선권을 가진다
라고이해했는데, 덧붙일 개념들이 혹시 있을까요?
아, 그리고 만약 오버라이딩된 메소드가 부모클래스에서 실행할 수 없는 메소드라면 어떻게되는지도 궁금합니다.
(혹시, 오버라이딩된 메소드가 부모클래스에서 실행되지않을 가능성은 아예 없나요?)
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
김도현님의 다형성에 관련된 질문 내용을 잘 이해하였습니다. 질문하신 내용에 대해 이미 강사님이 자세히 답변해 주신 경우가 있어 해당 답변 URL을 공유드립니다.
‘다형성 질문입니다’에서 다형성의 개념과 객체 생성 시 부모와 자식 클래스의 참조에 대해 설명하고 있습니다. 이 내용을 확인하시면 도움이 될 것입니다.
강사님께서는 상속 관계에서 자식 클래스를 생성하면 부모 클래스도 함께 메모리에 생성된다고 설명합니다. 그리고 ‘상속 -> super - 생성자’와 ‘상속 -> 상속과 메모리 구조’ 두 부분을 복습하면 더 좋은 이해를 할 수 있을 것이라고 조언하셨습니다.
이 외에도 ‘상속 관련해서 질문 있습니다.‘에서 상속과 인스턴스, 메모리 구조에 대한 설명이 있으니 참고하시면 좋을 것 같습니다.
또한, ‘다운캐스팅 질문’에서는 다형성과 캐스팅에 대한 설명이 있으니 관련 내용을 확인해 보시는 것도 유익할 것입니다.
각 링크의 답변을 참고하시면 다형성에 대한 이해를 더욱 넓히실 수 있을 것입니다.
부모클래스와 자식클래스를 개발하는 개발자가 서로 다르다고 가정하고,
자식클래스에 int A = 10; 이라는 멤버변수가 추가되었고 ,
부모클래스의 메소드 Alpha 를 오버라이딩하여 int A를 출력하는 로직을 작성했을때,
이를 부모클래스를 담당한 개발자가 모르는상태로 Alpha를 사용했다고 가정하면
1. 객체지향을 벗어난 작동방식이 아닌지
2. 부모클래스는 자식클래스의 멤버변수에 접근할 수 없다고 알고있는데, 위와같은 경우에는 부모클래스가 자식클래스의 멤버변수에 간접적으로 접근하는건 아닌지
2-1 맞다면 이 접근방식이 괜찮은건지
궁금합니다! ㅜㅜ