筆記本USB接口案例

筆記本電腦(laptop)通常具備使用USB設備的功能。

在生產時,筆記本都預留了可以插入USB設備的USB接口,

但具體是什麼USB設備,筆記本廠商並不關心,只要符合USB規格的設備都可以。

 

定義USB接口,具備最基本的開啓功能和關閉功能。鼠標和鍵盤要想能在電腦上使用,

那麼鼠標和鍵盤也必須遵守USB規範,實現USB接口,否則鼠標和鍵盤的生產出來也無法使用。

 

分析: 進行描述筆記本類,實現筆記本使用USB鼠標、USB鍵盤

 

①USB接口,包含打開設備功能、關閉設備功能。

②筆記本類,包含開機功能、關機功能、使用USB設備功能。

③鼠標類,要實現USB接口,並具備點擊的方法。

④鍵盤類,要實現USB接口,具備敲擊的方法。

//USB接口
package 電腦USB接口;

/**
 * @Author: Jason
 * @Date: 2019/8/14 22:57
 * @Version 1.0
 */
public interface USB {
    public abstract void open();   //打開設備

    public abstract void close();   //關閉設備

}

 

//電腦類
public class Computer {

    public void powerOn(){
        System.out.println("電腦開機");
    }
    public void powerOff(){
        System.out.println("電腦關機");
    }
    public void usbDevice(USB usb) {
        usb.open();  //打開設備
        usb.close(); //關閉設備

    }
}

 

//鼠標就是一個USB設備
public class Mouse implements USB{

    @Override
    public void open() {
        System.out.println("打開鼠標");
    }

    @Override
    public void close() {
        System.out.println("關閉鼠標");
    }
}

 

//鍵盤就是一個USB設備
public class Keyboard implements USB{

    @Override
    public void open() {
        System.out.println("打開鍵盤");
    }

    @Override
    public void close() {
        System.out.println("關閉鍵盤");
    }
}

 

//測試類
public class DemoTest {
    public static void main(String[] args) {
        //首先創建一個筆記本
        Computer computer = new Computer();
        computer.powerOn();

      /*  //準備一個鼠標供電腦使用
        Mouse mouse = new Mouse();
        //首先進行向上轉型,當作USB來用
        USB usb = mouse;
        */
      //或者用多態
        USB usbMouse = new Mouse();  //左父右子 多態

        //參數是USB類型,剛好傳遞進去的是USB鼠標
         computer.usbDevice(usbMouse);

         //創建一個鍵盤
        Keyboard keyboard = new Keyboard(); //沒有使用多態寫法 無向上轉型

        //方法參數是USB類型,但傳遞進去的是一個實現對象
        computer.usbDevice(keyboard);   //這裏本是USB類型 但keyboard可以  這裏也自動發生了向上轉型
      //  computer.usbDevice(new Keyboard()); //也可以

        //實現類向上轉型成爲接口類型

        computer.powerOff();
    }
}

 

 

對於自動轉型實例理解

package 電腦USB接口;

/**
 * @Author: Jason
 * @Date: 2019/8/15 0:24
 * @Version 1.0
 */
public class 自動向上轉型理解 {

    public static void main(String[] args) {
        method(10.10);  //正確 double --> double
        method(20);     //正確 int --> double 自動轉型
        int a = 89;
        method(a);           //int --> double  double範圍大 自動向上轉型
    }

    public static void method( double num){
        System.out.println(num);

    }
}

 

鼠標、鍵盤類的特有方法 使用向下轉型

//鼠標就是一個USB設備
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("點擊鼠標");
    }
}

//鍵盤就是一個USB設備
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 Computer {

    public void powerOn(){
        System.out.println("電腦開機");
    }
    public void powerOff(){
        System.out.println("電腦關機");
    }

    public void usbDevice(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(); //關閉設備

    }
}

 

添加完這幾處 再運行測試類

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