게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
본삭금] java 상위 클래스의 참조변수로 하위클래스의 인스터스 참조!!
게시물ID : programmer_14704짧은주소 복사하기
작성자 : 창천을꿈꾸며
추천 : 1
조회수 : 742회
댓글수 : 7개
등록시간 : 2015/12/01 01:32:06
옵션
  • 본인삭제금지
에 관해서 질문드립니다!!..
 
질문.png

 
왼쪽의 경우엔 컴파일 에러가 나고, 오른쪽의 경우엔.. 실행이 3이 출력이 되네요!!
 
또한 Person p1 = new Studnet(); 일때, p1 instanceof Student를 하면 true가 반환이 되더라구요.
 
그렇다는 말은.. p1이 가르키고 있는 인스턴스는 스튜던트가 맞다. 라는게 되는것같은데요
왼편의 p1.b가 오류나는 이유는,
p1은 person 객체를 참조하는데, person객체엔 b란게 없다구?! 라는 의미에서 컴파일 에러가 나는 것이고..
 
후자에서 3이 나오는 이유는, p1.b란게 호출될순 없어도.. p1이 가르키고 있는 메모리엔 b라는 String이 존재하기 때문이 맞나요?
 
그러니까..
 
p1.b 라는 것은, p1이 Person의 참조변수이기 때문에, 말이 안된다! 그러나 p1이 참조하는 인스턴스에 b는 존재한다.. 라고 생각하면 되련지요?
 
그리고, 오른편의 코드에서.. p1.hi()를 했을때 왜 Person 메소드의 hi가 아닌 Student 메소드의 hi가 실행되는지 잘 모르겠습니다.
 
상속관계의 메소드 오버라이딩 우선순위는 알고있습니다만,     p1은 Person의 참조변수니까.. Person의 메소드가 실행되어야 하는게 아닐련지요?
 
 
제가 야매로 추론해보자면.. Person p1 = new Student(); 라고 해주면.
 
p1 은 실제론 Student()라는 객체가 존재하는 메모리를 가르키지만,  어디까지나 Person의 참조변수이기 때문에.. 이름이 똑같거나, person만 갖고 있는 애들만 이름을 통해 불러올수있는걸까요?
 
 
질문2.png
 
하지만.. 이 코드의 경우엔 3,5가 순서대로 출력되는데 말입니다....
 
ㅠㅅ ㅠ
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호