P37 接口多态的综合案例

系统:Win10
Java:1.8.0_333
IDEA:2020.3.4

1.笔记本电脑

笔记本电脑(laptop)通常具备使用 USB 设备的功能。在生产时,笔记本都预留了可以插入 USB 设备的 USB 接口,但具体是什么 USB 设备,笔记本产商并不关心,只要符合 USB 规格的设备都可以
定义 USB 接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想在电脑上使用,那么鼠标和键盘也必须遵守 USB 规范,实现 USB 接口,否则鼠标和键盘生产出来也无法使用

2.案例分析

进行描述笔记本类,实现笔记本使用 USB 鼠标、USB 键盘

  1. USB接口,包含开启功能、关闭功能
  2. 笔记本类,包含开机功能、关机功能、使用USB设备功能
  3. 鼠标类,要实现USB接口,并具备点击的功能
  4. 键盘类,要实现USB接口,并具备键入的功能

3.案例实现

定义USB接口

public interface USB {
    public abstract void open(); // 开启功能
    public abstract void close(); // 关闭功能
}

定义鼠标类

public class Mouse implements USB {
    @Override
    public void open() {
        System.out.println("开启鼠标");
    }

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

    public void click() {
        System.out.println("鼠标点击");
    }
}

定义键盘类

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

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

    public void type() {
        System.out.println("键盘打字");
    }
}

定义笔记本类

public class Laptop {
    // 笔记本具备开机功能
    public void powerOn() {
        System.out.println("笔记本开机");
    }

    // 笔记本使用USB设备
    public void useDevice(USB usb) {
        usb.open();
        if (usb instanceof Mouse) {
            Mouse mouse = (Mouse) usb;
            mouse.click();
        } else if (usb instanceof Keyboard) {
            Keyboard keyboard = (Keyboard) usb;
            keyboard.type();
        }
        usb.close();
    }

    // 笔记本关机
    public void powerOff() {
        System.out.println("笔记本关机");
    }
}

测试类,代码如下

public class Test {
    public static void main(String[] args) {
        // 创建笔记本实体对象
        Laptop laptop = new Laptop();
        // 笔记本开机
        laptop.powerOn();
        // 创建鼠标实体对象
        USB usbMouse = new Mouse();
        // 笔记本使用鼠标
        laptop.useDevice(usbMouse);
        // 创建键盘实体对象
        USB usbKeyboard = new Keyboard();
        // 笔记本使用键盘
        laptop.useDevice(usbKeyboard);
        // 笔记本关机
        laptop.powerOff();
    }
}

4.运行结果

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李晋江

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值