继承多态灯泡发光问题

472 阅读1分钟
设计一个台灯类(Lamp)其中台灯有灯泡类(Buble)这个属性,还有开灯(on)这个方法。设计一个灯泡类(Buble),灯泡类有发亮的方法,其中有红灯泡类(RedBuble)和绿灯泡类(GreenBuble)他们都继承灯泡类(Buble)一个发亮的方法,请设计出一段代码可以使台灯开启灯泡发亮,并且保证替换不同种类的灯泡,台灯类代码不被修改。
package poly;

public class Buble {
    public void light(){
    }
}
package poly;

public class Lamp {
    public Buble buble;
    public void on(){
        buble.light();
    }
}
package poly;

public class GreenBlue extends Buble {
    @Override
    public void light() {
        System.out.println("发绿光");
    }
}
package poly;

public class RedBuble extends Buble {
    @Override
    public void light() {
        System.out.println("发红光");
    }
}
package poly;

public class Test {
    public static void main(String[] args) {
        Buble red=new RedBuble();
        Buble green=new GreenBlue();
        Lamp l=new Lamp();
        l.buble=red;
    //  l.buble=green;
        l.on();
    }
}