qq_62227344 2021-11-18 19:01 采纳率: 100%
浏览 97
已结题

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

题目描述
设计一个台灯类(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瓦的灯泡发出绿光~

用户代码

  • 写回答

1条回答 默认 最新

  • bingbingyihao 2021-11-18 20:52
    关注

    回答:

    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+"瓦的灯泡发出绿光");
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月21日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 CSS实现渐隐虚线边框
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题