/*내용을 복사 한 후 이클립스에서

ctrl + shift + F를 눌러주세요!!*/

 

 

//P.273 instanceof  연산자
//이놈은 뭔가 봤더니 참조변수..매개변수의 타입(?!)을 알아보기 위하여 만든 친구인것 같다.
//음.. 나름 쓸모가 있을듯 싶어서 정리 해보려고 합니다.
//형식은 : if ( 참조변수 instanceof 클래스명 ) 을 통하여 true/ false 를 반환한다고 한다.
//책의 예문은 약간 부족한것 같으니..car 클래스 작성한것을 이용해 비슷하게 한번 만들어 볼련다~~


package JavaTest;

class Car8{
 
 void drive(){
  
  System.out.println("출발~~부르릉!!");
 }
}

 
class FireEngine01 extends Car8{
 
 void water(){
  
  System.out.println("물 뿌리자!!");
 }
}


class Ambulance extends Car8{
 
 void sound(){
  
  System.out.println("삐뽀~삐뽀~");
 }
}

// 자~ 여기까지는 한번 쭉 보면 Car8 클래스를 부모로 놓고 FireEngine 과 Ambulance 클래스를 각각 상속받아서 만들었엉~

 


// 자! 여기서 집중!! 클래스를 하나더 만들었는데~ 바로 요기서 instanceof 를 쓸 예정이야~ 한줄 한줄  잘보셈!

class Test01{            //Test01 클래스
 
 void dowork(Car8 car){          //dowork 메서드 인데.. Car8 을 c 참조변수로 갖는 메서드 작성함!
  
  if(car instanceof FireEngine01){    //자~ 부모클래스인 car가 자식클래스 FireEngine01 로 형변환이 돼니?
                                            
   FireEngine01 fe = new FireEngine01(); //true 이면 인스턴스화 시켜서~
   fe.water();                                        //요렇게 해라~~ 라는거임..
   
  }else if(car instanceof Ambulance){        //아뉘면.. Ambulance 로 형변환이 돼니?
   Ambulance ab = new Ambulance();     //인스턴스화 시켜서~
   ab.sound();                                      //요렇게 해라~ 라는거지요...
  }
 }
 
}

 


public class instanceofTest {

 public static void main(String[] args) {

  
  Test01 t1 = new Test01();        //이건 Test01 을 쓸려고 인스턴스화 한거고~
  
  Car8 car = new FireEngine01();  //이건 자식클래스 FireEngine01 을 부모클래스 Car8 로 업캐스팅 했엉~
                                                //car 는 솔직히 자기 클래스 안에 있는것 밖에 못쓰는데.. 별...꼴....(-_-)ㅗ
  
  //Ambulance ab = (Ambulance)car; //이런식으로 업,다운 캐스팅은 불가해 CastingTest2 처럼 null 이 없어!
  
  t1.dowork(car);
  
  System.out.println(car instanceof Ambulance);  //부모클래스 car 는 자식클래스 Ambulance 로 형변환이 가능하니?
                                                                     //다시말해 다운캐스팅 가능하니? 당연히 안돼지.....
                                                                     //73번 줄때문에....쉬파...와...정말...
 }

}


//아...정말 할말이 없다...정말 돌아버리겠네... 이거 분석하느라 2시간 걸렸다.. 머리가 나쁜건지..ㅠ_ㅠ
//오늘 정말 캐스팅이 날 시험에 들게 한다... 그래 너죽고 나죽어라 캐스팅 한번 정복해보자!!

Posted by 옆모습오빠
: