台灯和灯泡了 真的觉得难解答 求码

题目描述
设计一个台灯类(Lamp)其中台灯有灯泡类(Buble)的属性buble表示它所用的灯泡,boolean类型的属性isTurnOn,表示灯的开关状态;一个实例方法void turn()表示按一下台灯开关,从而引起台灯开关状态的变化,当台灯被关上时,输出“台灯被关上,灯黑了”当台灯被打开时,由其中的灯泡调用work()方法。一个带Buble类型参数和boolean参数的构造方法。
设计一个抽象的灯泡类(Buble),灯泡类有int类型的power属性表示灯泡瓦数,还有一个抽象的实例方法work()方法表示灯泡工作时会发光;灯泡类分别提供一个无参构造方法和一个参数的构造方法,没有参数时表示灯泡的瓦数为15瓦。再设计红灯泡类(RedBuble)和绿灯泡类(GreenBuble),他们都是继承灯泡类(Buble)的具体的子类,都将重写work(),分别显示“XX瓦的灯泡发出红光”、“XX瓦的灯泡发出绿光~”,也提供两个构造方法。
在主类中创建两个台灯对象,其运行结果如样例输出所示。
public class Main {
public static void main(String[] args) {
Lamp lamp1 = new Lamp(new RedBuble(25), false);
Lamp lamp2 = new Lamp(new GreenBuble(), true);

System.out.println("lamp1按两次开关:");
lamp1.turn();
lamp1.turn();

System.out.println();

System.out.println("lamp2按两次开关:");
lamp2.turn();
lamp2.turn();

}
}

输出样例
lamp1按两次开关:
25瓦的灯泡发出红光~
本台灯被关上,灯黑了~

lamp2按两次开关:
本台灯被关上,灯黑了~
15瓦的灯泡发出绿光~

用户代码

回答:

img


import java.util.*;

public class Test{
    
    public static void main(String[] args){
        
        Lamp lamp1 = new Lamp(new RedBuble(25), false);
        Lamp lamp2 = new Lamp(new GreenBuble(), true);
        
        System.out.println("lamp1按两次开关:");
        lamp1.turn();
        lamp1.turn();
        System.out.println();
        System.out.println("lamp2按两次开关:");
        lamp2.turn();
        lamp2.turn();
        
        System.out.println(new Date());
    }
}

class Lamp{
    Buble buble;
    boolean isTurnOn;
    
    Lamp(Buble buble1,boolean state){
        buble = buble1;
        isTurnOn = state;
    }
    
    void turn(){
        isTurnOn = !isTurnOn;
        if(isTurnOn == false){
            System.out.println("台灯被关上,灯黑了");
        }
        else{
            buble.work();
        }
    }    
}

abstract class Buble{
    int power;
    
    abstract void work();
    
    Buble(){
        power = 15;
    }
    
    Buble(int n){
        power = n;
    }
}

class RedBuble extends Buble{
    RedBuble(){
        power = 15;
    }
    
    RedBuble(int n){
        power = n;
    }

    void work(){
        System.out.println(power+"瓦的灯泡发出红光");
    }
}

class GreenBuble extends Buble{
    GreenBuble(){
        power = 15;
    }
    
    GreenBuble(int n){
        power = n;
    }

    void work(){
        System.out.println(power+"瓦的灯泡发出绿光");
    }
}