자바 InstanceOf 상속관계에서 형변환 가능한지 확인
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");
}
}