참조 변수의 형변환(2)
예제
EX7_7
class Ex7_7 {
public static void main(String args[]) {
Car car = null;
FireEngine fe = new FireEngine();
FireEngine fe2 = null;
// FireEngine fe2 = (FireEngine)car; 조상 -> 자손으로 형변환
// Car car2 = (Car)fe2; 자손 -> 조상으로 형변환
// car2.drive(); fe = null 인경우 NullPointException 발생
fe.water();
car = fe; // car = (Car)fe;에서 형변환이 생략됨
car.water(); //에러. Car타입의 참조변수인 car로는 warter()를 사용 불가
fe2 = (FireEngine)car; // 자손타입 ← 조상타입. 형변환 생략 불가
fe2.water();
}
}
class Car {
String color;
int door;
void drive() { // 운전하는 기능
System.out.println("drive, Brrrr~");
}
void stop() { // 멈추는 기능
System.out.println("stop!!!");
}
}
class FireEngine extends Car { // 소방차
void water() { // 물을 뿌리는 기능
System.out.println("water!!!");
}
}
//실행 시 warter!! 나옴