每日一练编程题:今天是【接口,多态】

设计程序 :

  • 电脑类的属性USB接口数组 : 有3个usb插口
  • 电脑类的功能 :
  1. 通过接口插入外设 (u盘,麦克风,键盘等)
    addUSB(USB usb) {
    }
  2. 开机
    要求: 电脑开机前,先启动外设
  3. 关机
    要求: 电脑关机前,先关闭外设
  • 外设类(u盘,麦克风,键盘等)
    功能 : 启动 关闭
    USB接口
    定义usb设备的统一功能
    开启() 关闭()
  • 效果 :
    创建电脑对象,能插入外设,调用方法电脑开机,电脑开机前 外设启动,
    电脑关机前,外设先关闭

UML类图

在这里插入图片描述

参考代码

Usb接口
package day529.homework;
/**
* Description: Usb接口
* date: 2024/5/29 20:51
* @author: LiCoffee
* @since JDK 1.8
*/

public interface Usb {
    void open(); //打开外接设备
    void close(); //关闭外接设备
}
UDisk 类实现 Usb 接口
package day529.homework;

public class UDisk implements Usb{
    @Override
    public void open() {
        System.out.println("打开U盘");
    }

    @Override
    public void close() {
        System.out.println("关闭U盘");
    }
}
Keyboard 类实现 Usb 接口
package day529.homework;

public class Keyboard implements Usb{
    @Override
    public void open() {
        System.out.println("打开键盘");
    }

    @Override
    public void close() {
        System.out.println("关闭键盘");
    }
}

Keyboard 类实现 Usb 接口
package day529.homework;

public class Microphone implements Usb{
    @Override
    public void open() {
        System.out.println("打开麦克风");
    }

    @Override
    public void close() {
        System.out.println("关闭麦克风");
    }
}

Computer 类
package day529.homework;
/**
* Description: 电脑类
* date: 2024/5/29 20:44
* @author: LiCoffee
* @since JDK 1.8
*/

public class Computer {
    private int interfaceNum; //电脑接口数量
    private Usb[] usbs;      //接口数组
    /**
     * @descriptions 无参构造方法,默认为三个接口
     * @author LiCoffee
     * @date 2024/5/29 20:43
     **/

    public Computer() {
        this(3);
        usbs = new Usb[interfaceNum];//定义接口数量

    }
    /**
     * @descriptions 有参构造方法,个性化定制接口数量
     * @author LiCoffee
     * @date 2024/5/29 20:47
     * @param interfaceNum - 传入接口数量
     **/

    public Computer(int interfaceNum) {
        this.interfaceNum = interfaceNum;
        usbs = new Usb[interfaceNum];
    }

    public int getInterfaceNum() {
        return interfaceNum;
    }

    public void setInterfaceNum(int interfaceNum) {
        this.interfaceNum = interfaceNum;
    }
    /**
     * @descriptions 插入设备
     * @author LiCoffee
     * @date 2024/5/29 20:48
     * @param usb -插入设备类型
     **/
    public void addUsb(Usb usb){
        for (int i = 0; i < usbs.length; i++) {
            if (usbs[i] == null) {
                usbs[i] = usb;
                break;
            }
        }
    }
    /**
     * @descriptions 打开电脑
     * @author LiCoffee
     * @date 2024/5/29 20:50
     **/

    public void open(){
        System.out.println("电脑打开");
        for (int i = 0; i < usbs.length; i++) {
            if (usbs[i] == null) {  //防止空指针异常
                break;
            }
            usbs[i].open();
        }

    }
    /**
     * @descriptions 关闭电脑
     * @author LiCoffee
     * @date 2024/5/29 20:50
     **/

    public void close(){
        for (int i = 0; i < usbs.length; i++) {
            if (usbs[i] == null) {  //防止空指针异常
                break;
            }
            usbs[i].close();
        }
        System.out.println("电脑关闭");
    }
}

Test 测试类
package day529.homework;

public class Test {
    public static void main(String[] args) {
        Computer computer = new Computer(); //创建电脑
        computer.addUsb(new Keyboard());    //插入接口
        computer.addUsb(new Microphone()); //插入接口
        computer.addUsb(new UDisk());     //插入接口
        computer.open();    //打开电脑
        computer.close();   //关闭电脑

    }

}

最后

如果感觉有收获的话,点个赞 👍🏻 吧。
❤️❤️❤️本人菜鸟修行期,如有错误,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍在这里插入图片描述

  • 16
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值