JAVA/자바

자바 InstanceOf 상속관계에서 형변환 가능한지 확인

왕왕왕왕 2015. 7. 3. 11:51

package kkk;


public class InstanceOf {

public static void wrapBox(Box box) {


//box 가 GoldPaperBox로 형변환이 가능하다면 실행

if (box instanceof GoldPaperBox) {

((GoldPaperBox) box).godWrap();


//box 가 PaperBox로 형변환이 가능하다면 실행

} else if (box instanceof PaperBox) {

((PaperBox) box).PaperWrap();


//나머지

} else {

box.simpleWrap();

}

}

public static void main(String[] args) {

Box box1 = new Box();

PaperBox box2 = new PaperBox();

GoldPaperBox box3 = new GoldPaperBox();

wrapBox(box1);

wrapBox(box2);

wrapBox(box3);

}

}


class Box {

public void simpleWrap() {

System.out.println("simple wrap");

}


}


class PaperBox extends Box {

public void PaperWrap() {

System.out.println("paper wrap");

}


}


class GoldPaperBox extends PaperBox {

public void godWrap() {

System.out.println("gold wrap");

}

}


인스턴스의 자료형에 따라서 호출할 메소드를 다르게 할떄 
결과는 true 또는 false를 반환한다.