1. 程式人生 > 實用技巧 >Java日誌第20天 2020.7.25

Java日誌第20天 2020.7.25

綜合例項

膝上型電腦(laptop)通常具備使用USB裝置的功能。在生產時。筆記本都預留了可以插入USB裝置的USB介面。但具體是什麼USB裝置,筆記本廠商並不關心,只要符合USB規格的裝置都可以。

定義USB介面,具備最基本的開啟功能和關閉功能。滑鼠和鍵盤要想能在電腦上使用,那麼滑鼠和鍵盤也必須符合USB規範,實現USB介面,否則滑鼠和鍵盤的生產出來也無法使用。

定義USB介面

public interface USB {

    public abstract void open();

    public abstract void close();

}

定義滑鼠類和鍵盤類,實現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("滑鼠點選");
    }
}
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("鍵盤打字"); } }

定義Laptop膝上型電腦類,實現開啟和關閉功能以及滑鼠和鍵盤的使用

public class Laptop {
    
public void powerOn(){ System.out.println("開機"); } public void powerOff(){ System.out.println("關機"); } public void connectedDevice(USB usb){ usb.open(); } public void useDevice(USB usb){ if(usb instanceof Mouse){ Mouse mouse = (Mouse) usb; mouse.click(); } else if(usb instanceof Keyboard){ Keyboard keyboard = (Keyboard) usb; keyboard.type(); } } public void disconnectedDevice(USB usb){ usb.close(); } }

實現類

public class DemoMain {

    public static void main(String[] args) {
        //建立一個電腦
        Laptop laptop = new Laptop();
        //開啟電腦
        laptop.powerOn();
        //連線滑鼠
        USB usbMouse = new Mouse();//多型方法
        laptop.connectedDevice(usbMouse);

        //連線鍵盤
        Keyboard usbKeyboard = new Keyboard();//不使用多型方法
        laptop.connectedDevice(usbKeyboard);//正確寫法

        //使用鍵盤和滑鼠
        laptop.useDevice(usbMouse);
        laptop.useDevice(usbKeyboard);

        //斷開鍵盤和滑鼠
        laptop.disconnectedDevice(usbMouse);
        laptop.disconnectedDevice(usbKeyboard);

        //電腦關機
        laptop.powerOff();
    }
}

實驗結果如下

final關鍵字

final關鍵字代表最終的,不可改變的。

常見的四種用法:

1.修飾一個類

2.修飾一個方法

3.修飾一個區域性變數

4.修飾一個成員變數

final修飾類

格式:public final class 類名稱 { //... }

含義:final修飾的類不能有任何子類,但是可以有父類。(最高父類Object)

注意:因為final類沒有子類,所以final修飾的類中的所有方法都無法被覆蓋重寫。

final修飾方法

格式:修飾符 final 返回值型別 方法名稱(引數列表){ 方法體 }

含義:final修飾方法不能被覆蓋重寫

*對於類和方法,abstract和final不能同時使用。

final修飾區域性變數

final修飾的區域性變數只能對其進行唯一一次賦值,一旦賦值便不可以改變

*對於基本型別,不可改變指的是資料

*對於引用型別,不可改變指的是地址值,可以對其成員變數更改值

final修飾成員變數

由於成員變數具有預設值,所以需要手動賦值。

可以直接賦值,或者通過構造方法進行賦值,但二者選其一即可。

要保證類中所有的過載構造方法都對有final修飾的成員變數進行賦值。

今天的知識比較簡單,明天從修飾符開始學習,加油!