Wrapping.java를 instanceof 연산자를 사용하지 않는 형태로 변경해보자
이를위해서 클래스의 상속관계를 그대로 유지하면서 메소드 오버라이딩 기반으로 동작하도록
코드를 수정하자
-----------------------------------------------------------------------
class Box{
public void Wrap(){
System.out.println("Simple Wrapping");
}
}
class PaperBox extends Box{
public void Wrap(){
System.out.println("Paper Wrapping");
}
}
class GoldPaperBox extends PaperBox{
public void Wrap(){
System.out.println("Gold Wrapping");
}
}
public class Wrapping {
public static void wrapBox(Box box){
box.Wrap();
}
public static void main(String[] args) {
Box box1 = new Box5();
Box box2 = new PaperBox();
Box box3 = new GoldPaperBox();
wrapBox(box1);
wrapBox(box2);
wrapBox(box3);
}
}
Simple Wrapping
Paper Wrapping
Gold Wrapping