참조변수의 형변환이란?

아래 그림과 같이 Car, FireEngine,Ambulance가 정의되어 있을 때

Car타입의 참조변수와 FireEngine타입의 참조변수,
Car타입의 참조변수와 Ambulance타입의 참조변수는 형변환이 가능하다.
Car car = null;
FireEngine fe = new FireEngine();
FireEngine fe2 = null;
car = fe;
fe2 = (FireEngine)car;
car = fe; 를 보면 형변환이 생략되었다. 자식에서 부모타입으로 업캐스팅
fe2 = (FireEngine) car; 는 형변환을 생략 불가하다. 부모에서 자식타입으로 다운 캐스팅
서로 상속관계이 있는 타입간의 형변환은 양방향으로 자유롭게 수행될 수 있으나,
참조변수가 가리키는 인스턴스의 자식타입으로 형변환은 허용되지 않는다.
그래서 참조변수가 가리키는 인스턴스의 타입이 무엇인지 확인하는 것이 중요하다.

Q.참조변수 형변환은 왜 하는가?

Q.instanceof 연산자는 언제 사용하나요?
