1.
자식 클래스의 참조형에서 부모 클래스의 참조형으로 형 변환 시 생략 가능하고, 실제 부모 클래스의 참조변수가
어떤 인스턴스를 가리키고 있든 문제 없음.
왜?
부모 클래스보다 자식 클래스에 정의된 멤버변수나 메서드가 더 많기 때문에 부모 클래스의 참조변수가 실제로
부모 클래스의 인스턴스를 가리키고 있든 자식 클래스의 인스턴스를 가리키고 있든 안전하게 호출하는 것이
가능하기 때문이다.
2.
부모 클래스의 참조형에서 자식 클래스의 참조형으로 형 변환 시 생략 불가능 하고, 부모 클래스의 참조형이 가리
키고 있던 인스턴스에 따라서 에러가 날 수 있음.
왜?
자식 클래스의 참조형으로 자식 클래스에 정의된 메서드를 호출 하는 것이 가능한데, 만약 부모 클래스의 참조변수가
가리키고 있던 인스턴스가 자식 클래스의 인스턴스라면?
이때는 형 변환을 명시한다면 올바르게 캐스팅이 됨.
반면 부모 클래스의 참조변수가 가리키고 있던 인스턴스가 부모 클래스의 인스턴스 였다면?
형 변환을 명시하더라도, 컴파일 에러는 안나지만 실행 시 에러가 발생함.
왜?
부모 클래스에는 정의되지 않은 메서드를 자식 클래스의 참조변수에서 호출할 수 있기 때문. 자식 클래스의 참조변수
가 부모 클래스의 인스턴스를 가리키고 있는데, 부모 클래스에는 정의되지 않은 메서드를 호출한다면 당연히 에러로
간주됨.
'Java > 공개글' 카테고리의 다른 글
Can't load IA 32-bit .dll on a AMD 64-bit platform (1) | 2014.07.22 |
---|---|
이클립스에서 java JNI로 Hello World를 출력해보자 (3) | 2014.07.21 |
[JNI] javah could not find class file (0) | 2014.07.21 |
자바/이클립스에서의 Carriage Return, Line Feed에 대해서 (0) | 2014.02.28 |
C++과 Java의 차이점? (0) | 2013.07.13 |