instanceof 연산자
::::특별한 Java Story 2013. 6. 10. 02:41 |/*내용을 복사 한 후 이클립스에서
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시간 걸렸다.. 머리가 나쁜건지..ㅠ_ㅠ
//오늘 정말 캐스팅이 날 시험에 들게 한다... 그래 너죽고 나죽어라 캐스팅 한번 정복해보자!!
'::::특별한 Java Story' 카테고리의 다른 글
참조변수와 인스턴스의 연결 (0) | 2013.06.11 |
---|---|
우편번호 DB (0) | 2013.06.10 |
다형성(polymorphism)/ 참조변수의 형변환 ② (0) | 2013.06.10 |
다형성(polymorphism)/ 참조변수의 형변환 ① (0) | 2013.06.09 |
toString 메서드, toString() (0) | 2013.06.09 |