多型和介面的綜合案例--筆記本USB介面案例-----Java
阿新 • • 發佈:2020-08-14
筆記本USB介面案例:
1 public interface USB { 2 3 public abstract void open(); //開啟裝置 4 5 public abstract void close(); //關閉裝置 6 7 }
1 public class Computer { 2 3 public void powerOn(){ 4 System.out.println("膝上型電腦開機"); 5 } 6 7 public void powerOff(){ 8 System.out.println("膝上型電腦關機");9 } 10 11 //使用USB裝置的方法,使用介面作為方法的引數 12 public void useDevice(USB usb){ 13 usb.open();// 開啟裝置 14 if (usb instanceof Mouse){ 15 Mouse mouse = (Mouse) usb; //向下轉型 16 mouse.click(); 17 }else if (usb instanceof Keyboard){ 18 Keyboard keyboard = (Keyboard) usb; //向下轉型 19 keyboard.type(); 20 } 21 usb.close();// 關閉裝置 22 } 23 }
1 //滑鼠就是一個USB裝置 2 public class Mouse implements USB{ 3 4 @Override 5 public void open() { 6 System.out.println("開啟滑鼠"); 7 } 8 9 @Override 10 public void close() { 11 System.out.println("關閉滑鼠");12 } 13 14 public void click(){ 15 System.out.println("滑鼠點選"); 16 } 17 }
1 public class Keyboard implements USB{ 2 3 @Override 4 public void open() { 5 System.out.println("開啟鍵盤"); 6 } 7 8 @Override 9 public void close() { 10 System.out.println("關閉鍵盤"); 11 } 12 13 public void type(){ 14 System.out.println("鍵盤輸入"); 15 } 16 }
1 public class DemoMain { 2 3 public static void main(String[] args) { 4 //首先建立一個膝上型電腦 5 Computer computer = new Computer(); 6 computer.powerOn(); 7 System.out.println("..............................."); 8 9 //準備一個滑鼠,供電腦使用 10 // Mouse mouse = new Mouse(); 11 //首先實現向上轉型 12 USB usbMouse = new Mouse(); //多型寫法 13 //引數是USB型別,傳遞進去的是USB滑鼠 14 computer.useDevice(usbMouse); 15 16 //建立一個USB鍵盤 17 Keyboard keyboard = new Keyboard(); 18 //方法引數是USB型別,傳遞進去的是實現類物件 19 computer.useDevice(keyboard); //正確寫法! 寫發生了向上轉型 20 //使用子類物件、匿名物件也可以 21 // computer.useDevice(new Keyboard()); //也是一個正確寫法 22 23 24 System.out.println("..............................."); 25 computer.powerOff(); 26 27 System.out.println("================================"); 28 method(10.0); //10.0 正確寫法:double--->double 29 method(20); //20.0 正確寫法: int--->double 30 int a = 30; 31 method(a); //30.0 正確寫法: int--->double 32 } 33 34 public static void method(double num){ 35 System.out.println(num); 36 } 37 38 }