1. 程式人生 > 實用技巧 >多型和介面的綜合案例--筆記本USB介面案例-----Java

多型和介面的綜合案例--筆記本USB介面案例-----Java

筆記本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 }