작성
·
494
0
안녕하세요!
강의 정말 잘 듣고 있습니다.
class PBoard {
public void PBoard(){
System.out.println("PBoard method");
}
}
class CBoard extends PBoard{
public void Cboard(){
System.out.println("Cboard method");
}
}
public class ClassCast {
public static void main(String[] args) {
PBoard sbd1 = new CBoard();
System.out.println(sbd1.getClass().getName());
CBoard sbd2 = (CBoard)sbd1;
System.out.println(sbd1.getClass().getName());
System.out.println("-------------");
}
}
위의 예제와 같이 자식 객체를 생성하고 부모타입으로 타입 캐스팅 한 경우, System.out.println(sbd1.getClass().getName());
에서 부모 클래스가 나올 줄 알았는데, 자식 클래스가 나옵니다!
혹시 그 이유가, 참조변수는 부모 클래스형이지만, 메모리에는 자식클래스가 올라와 있기 떄문인가요?
자바에서 타입을 조회할 때 메모리를 조회하는지, 참조변수 형을 조회하는지 궁굼합니다..!
감사합니다.
답변