사용할 수 있는 멤버의 갯수를 조절하기 위해 사용
주소값, 객체는 바뀌지 않는다
조상, 자손 관계의 참조변수는 서로 형변환 가능 (조상-자손 관계일 때만 가능하다!)
참조변수가 가리키는 실제 객체(인스턴스)가 중요하다.
instance of 연산자
참조변수의 형변환 가능 여부 확인에 사용. 가능하면 ture 반환.
형변환 전에 반드시 instanceof로 확인해야 함!
자기 자신과 조상클래스(전부)에 대해 반드시 true가 나옴 -> 형변환 가능
false가 나오는 경우 -> 형변환 불가능
void doWork(Car c) { // 참조변수 타입이 Car임 -> new Car(); new FireEngine(); new Ambulance();
// 다형성으로 인해, 자기 자신 포함, 자손 클래스들 전부 사용 가능
if (c instanceof FireEngine) { // 1. 형변환 가능 여부 확인
FireEngine fe = (FireEngine) c; // 2. 형변환
fe.water();
}
// 아래 코드는 서로 동일하다
// 1.
doWork(new FireEngine());
// 2.
Car c = new FireEngine();
doWork(c);