【笔记本USB接口】【接口多态的综合案例】

【基础介绍】

笔记本电脑(laptop) 通常具备使用USB设备的功能。定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范,实现USB接口,否则鼠标和键盘的生产出来也无法使用。

【案例分析】

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

●USB接口,包含打开设备功能、关闭设备功能;

●笔记本类,包含开机功能、关机功能、使用USB设备功能;

●鼠标类,要实现USB接口,并具备点击的方法;

●键盘类,要实现USB接口,具备敲击的方法。

●分析图:
在这里插入图片描述
【代码实现】

<USB接口>

package com.java.intreface;

public interface USB {
    public abstract void open();
    public abstract void close();
}

<笔记本电脑>

package com.java.intreface;

//笔记本电脑
public class Computer {
    public void powerOn() {
        System.out.println("电脑开机");
    }
    public void powerOf() {
        System.out.println("电脑关机");
    }

    public void use(USB usb){
        usb.open();
        usb.close();
        if(usb instanceof Mouse){ //向下转型
            Mouse mouse = (Mouse) usb;
            mouse.click();
        }else if(usb instanceof Keyboard){
            Keyboard keyboard = (Keyboard)usb;
            keyboard.input();
        }
    }
}

<鼠标类>

package com.java.intreface;

//鼠标类
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 com.java.intreface;
//键盘类
public class Keyboard implements USB {
    @Override
    public void open() {
        System.out.println("打开键盘");
    }

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

< Main >

package com.java.intreface;

public class DemonMain {
    public static void main(String[] args) {
        //创建一个笔记本电脑
        Computer computer = new Computer();
        computer.powerOn();
        System.out.println("============");

        /*
        方法①:向下转型
        */
        USB usbMouse = new Mouse();
        computer.use(usbMouse);
        System.out.println("============");
        /*
        方法二:可以直接new: 类似于把int转成double => 把keyboard转成USB
        */
        Keyboard useKeyboard = new Keyboard();
        computer.use(useKeyboard); //本来括号里面是USB类型 ①
        //computer.use(new Keyboard());//使用匿名对象也可以 ②

        System.out.println("============");
        computer.powerOf();
    }
}

【运行结果】
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章