• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

업,다운캐스팅

20.03.15 17:06 작성 조회수 157

0

13:48

Human h1 = st; //h1은 자식인 student를 가리키고 있다

라고하셨는데  st ->h1으로 대입 즉, student가 Human으로 아닌가 싶습니다. 업캐스팅이라고 하죠 자식이 부모클래스에 접근하는 방식이니까요. 

Student st2 = h1 as Student;  // h1 -> st2 즉, Human이 stduent으로 부모클래스에서 자식 클래스로 다운캐스팅 이라고 알고있습니다.

궁금한걸 정리하자면, 부모클래스가 자식클래스로의 접근이 가능하다고 하시고 자식클래스가 부모클래스로 접근이 불가능하다고 하셨는데 반대가 아닌가 싶습니다.

제가 지식이 짧아서 이해가 부족합니다. 어떤 표현이 맞는지 알려주세요.

답변 1

답변을 작성해보세요.

0

제가 아직 확인은 못했는데 만일 그랬다면 정정해야 합니다. 당연히 부모클래스는 자식클래스를 볼 수 없습니다. 인터페이스를 구현한 클래스에서도 인터페이스(부모)로 자식을 포인팅할 수 있지만 인터페이스를 구현하지 않고 자식클래스 내부에서 선언된 것들을 볼 수 없는 것과 같은 이치입니다. 자식은 부모의 내용을 모두 상속받기 때문에 당연히 보이는 것이고요. 물론 접근 제한자로 캡슐화된 것들은 예외지요. 좋은 지적 감사하고요, 시간될 때 검토하고 고쳐야 한다면 고치겠습니다.