【筆記本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();
    }
}

【運行結果】
在這裏插入圖片描述

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