1.


자식 클래스의 참조형에서 부모 클래스의 참조형으로 형 변환 시 생략 가능하고, 실제 부모 클래스의 참조변수가


어떤 인스턴스를 가리키고 있든 문제 없음.


왜?


부모 클래스보다 자식 클래스에 정의된 멤버변수나 메서드가 더 많기 때문에 부모 클래스의 참조변수가 실제로


부모 클래스의 인스턴스를 가리키고 있든 자식 클래스의 인스턴스를 가리키고 있든 안전하게 호출하는 것이


가능하기 때문이다.



2.


부모 클래스의 참조형에서 자식 클래스의 참조형으로 형 변환 시 생략 불가능 하고, 부모 클래스의 참조형이 가리


키고 있던 인스턴스에 따라서 에러가 날 수 있음.


왜?


자식 클래스의 참조형으로 자식 클래스에 정의된 메서드를 호출 하는 것이 가능한데, 만약 부모 클래스의 참조변수가


가리키고 있던 인스턴스가 자식 클래스의 인스턴스라면?


이때는 형 변환을 명시한다면 올바르게 캐스팅이 됨.


반면 부모 클래스의 참조변수가 가리키고 있던 인스턴스가 부모 클래스의 인스턴스 였다면?


형 변환을 명시하더라도, 컴파일 에러는 안나지만 실행 시 에러가 발생함.


왜?


부모 클래스에는 정의되지 않은 메서드를 자식 클래스의 참조변수에서 호출할 수 있기 때문. 자식 클래스의 참조변수


가 부모 클래스의 인스턴스를 가리키고 있는데, 부모 클래스에는 정의되지 않은 메서드를 호출한다면 당연히 에러로


간주됨.









Posted by huammmm1
,