Java日誌第20天 2020.7.25
阿新 • • 發佈:2020-07-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 implementsUSB { @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修飾的成員變數進行賦值。
今天的知識比較簡單,明天從修飾符開始學習,加油!