多态和接口的综合案例--笔记本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 }

 

posted @ 2020-08-14 12:32  云谷の风  阅读(171)  评论(0编辑  收藏  举报