Java笔记 接口USB案例 (2020.5.20)

(如有问题,欢迎各位大佬批评指正)

USB接口案例

分析:

  • USB接口,包含打开设备功能和关闭设备功能
  • 笔记本类,包含开机功能,关机功能,使用USB设备功能
  • 鼠标类,实现USB接口,并具备点击方法
  • 键盘类,实现USB接口,并具备敲击功能

图解:
Java笔记 接口USB案例 (2020.5.20)_第1张图片

  • 根据分析首先创建一个USB接口
package md.day08.demo01;

public abstract interface USB {
    //打开USB设备
    public abstract void open();
    //关闭设备
    void close();
}
  • 创建一个电脑类
package md.day08.demo01;

public class Computer {
    //开机
    public void powerOn() {
        System.out.println("开机命令");
    //使用USB设备
    public void useUSB(USB usb) {
        //打开设备
        usb.open();
        if (usb instanceof Mouse) {//先判断
            ((Mouse) usb).click();//向下转型
        } else if (usb instanceof Keyboard) {//先判断
            ((Keyboard) usb).type();//向下转型
        }
        //关闭设备
        usb.close();
    }
   //关机
    public void powerOff() {
        System.out.println("关机命令");
    }
}

  • 创建一个键盘类
package md.day08.demo01;

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("键盘输入");
    }
}

创建一个鼠标类

package md.day08.demo01;

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("鼠标点击");
    }

}

最终实现:

package md.day08;

import md.day08.demo01.Computer;
import md.day08.demo01.Keyboard;
import md.day08.demo01.Mouse;
import md.day08.demo01.USB;

public class DemoMain {
    public static void main(String[] args) {
        //创建一个电脑类
        Computer computer = new Computer();
        computer.powerOn();
        //创建一个鼠标类
        USB usbMouse = new Mouse();
        //使用鼠标
        computer.useUSB(usbMouse);
        //创建一个键盘类
        Keyboard usbKeyboard = new Keyboard();
        //使用键盘
        computer.useUSB(usbKeyboard);

        computer.powerOff();

    }
}

注意:
在这里使用 computer 对象调用 useUSB 方法的时候,因为需要一个 USB 参数所以要发生向上转型。在这里我们创建 鼠标 对象的时候就是用的多态所以 鼠标 已经实现了向上转型,但是:这里键盘我们按照原始的创建对象的方法创建了 键盘 对象。为什么也可以直接作为参数传递进 useUSB 方法呢?
重点:
向上转型是可以发生自动转换的,可以理解为 int–>double 这种变量的自动类型转化。所以我们这里用原始的方法创建实现类的对象也是可以直接使用的。

你可能感兴趣的:(Java)