레퍼런스가 가리키는 객체의 타입 식별을 위해 사용하는 연산자이다.
객체레퍼런스 instanceof 클래스타입
이렇게 입력하면 true/false를 판별하고 그에 따른 다음코드를 실행한다.
업캐스팅되면 객체의 타입 판단이 어렵기 때문에 사용한다.
슈퍼클래스는 여러 서브클래스들로 상속되기 때문이다.
Transportation a = new Subway();
Transportation b = new Line2();
Transportation c = new Bus();
if(a instanceof Transportation) //true
if(a instanceof Bus) //false
if(b instanceof Bus) //false , b는 Bus타입이 아니다
if(b instanceof Subway) //true
if(a instanceof Line2) //true , 상속관계
if(c instanceof Line2) //false , 하위에서 상위상속은 불가하기 때문
if(8 instanceof int)
instanceof는 객체에 대한 레퍼런스만 사용하기에 문법오류가 발생한다.
하지만 문자(String)은 객체이기 때문에 오류가 나지 않는다.