: reference는 클래스를 지칭하는 변수
: 즉 instanceof는 레퍼런스와 클래스를 비교.
: reference instanceof ObjectA
: reference가 가리키는 객체가 ObjectA 타입이 될 수 있는지 검사. 되면 true, 안되면 false
- 소스
// 앞에서의 InheritanceExam.java 필요.
class People{}
public class InstanceofExam{
class People{}
public class InstanceofExam{
public static void main(String args []){
// EfSonata, Excel, Canival은 모두 Car 클래스를 상속받음
People p = new People();
Car car = new Car();
Car car = new Car();
EfSonata ef = new EfSonata();
Excel ex = new Excel();
Canival ca = new Canival();
if(car instanceof Car){ // car레퍼런스는 Car객체가 될 수 있음 (Car로부터 상속 받음)
System.out.println("car instanceof Car is true");
}
else{
System.out.println("car instanceof Car is false");
}
if(car instanceof EfSonata){ // car레퍼런스는 EfSonata객체가 될 수 없음 (EfSonata로부터 상속 받지 않음)
System.out.println("car instanceof EfSonata is true");
}
else{
System.out.println("car instanceof EfSonata is false");
}
if(ef instanceof Car){ // ef레퍼런스는 Car객체가 될 수 있음 (Car로부터 상속 받음)
System.out.println("ef instanceof Car is true");
}
else{
System.out.println("ef instanceof Car is false");
}
if(ex instanceof Car){ // ex레퍼런스는 Car객체가 될 수 있음 (Car로부터 상속 받음)
System.out.println("ex instanceof Car is true");
}
else{
System.out.println("ex instanceof Car is false");
}
if(ca instanceof Car){ // ca레퍼런스는 Car객체가 될 수 있음 (Car로부터 상속 받음)
System.out.println("ca instanceof Car is true");
}
else{
System.out.println("ca instanceof Car is false");
}
/* if(p instanceof Car){
System.out.println("p instanceof Car is true");
} // p와 Car는 상속관계가 아예 없다 */
/* if(p instanceof Car){
System.out.println("p instanceof Car is true");
} // p와 Car는 상속관계가 아예 없다 */
}
}
- 결과