2013년 6월 27일 목요일

(130627) 4일차 InstanceofExam.java (4일차 3교시 문제 - instanceof 테스트)

 - instanceof
 : reference는 클래스를 지칭하는 변수
 : 즉 instanceof는 레퍼런스와 클래스를 비교.
 : reference instanceof ObjectA
 : reference가 가리키는 객체가 ObjectA 타입이 될 수 있는지 검사. 되면 true, 안되면 false 


 - 소스
// 앞에서의 InheritanceExam.java 필요.

class People{}
public class InstanceofExam{
public static void main(String args []){
// EfSonata, Excel, Canival은 모두 Car 클래스를 상속받음
 People p = new People();  
  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는 상속관계가 아예 없다 */
}
}


 - 결과