笔记本案例

 

 

1 public interface USB {
2 
3     public abstract void open(); // 打开设备
4 
5     public abstract void close(); // 关闭设备
6 
7 }
 1 // 鼠标就是一个USB设备
 2 public class Mouse implements USB {
 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 click() {
14         System.out.println("鼠标点击");
15     }
16 }
 1 // 键盘就是一个USB设备
 2 public class Keyboard implements USB {
 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 }
public class Computer {

    public void powerOn() {
        System.out.println("笔记本电脑开机");
    }

    public void powerOff() {
        System.out.println("笔记本电脑关机");
    }

    // 使用USB设备的方法,使用接口作为方法的参数
    public void useDevice(USB usb) {
        usb.open(); // 打开设备
        if (usb instanceof Mouse) { // 一定要先判断
            Mouse mouse = (Mouse) usb; // 向下转型
            mouse.click();
        } else if (usb instanceof Keyboard) { // 先判断
            Keyboard keyboard = (Keyboard) usb; // 向下转型
            keyboard.type();
        }
        usb.close(); // 关闭设备
    }

}
 1 public class DemoMain {
 2 
 3     public static void main(String[] args) {
 4         // 首先创建一个笔记本电脑
 5         Computer computer = new Computer();
 6         computer.powerOn();
 7 
 8         // 准备一个鼠标,供电脑使用
 9 //        Mouse mouse = new Mouse();
10         // 首先进行向上转型
11         USB usbMouse = new Mouse(); // 多态写法
12         // 参数是USB类型,我正好传递进去的就是USB鼠标
13         computer.useDevice(usbMouse);
14 
15         // 创建一个USB键盘
16         Keyboard keyboard = new Keyboard(); // 没有使用多态写法
17         // 方法参数是USB类型,传递进去的是实现类对象
18         computer.useDevice(keyboard); // 正确写法!也发生了向上转型
19         // 使用子类对象,匿名对象,也可以
20 //        computer.useDevice(new Keyboard()); // 也是正确写法
21 
22         computer.powerOff();
23         System.out.println("==================");
24 
25         method(10.0); // 正确写法,double --> double
26         method(20); // 正确写法,int --> double
27         int a = 30;
28         method(a); // 正确写法,int --> double
29     }
30 
31     public static void method(double num) {
32         System.out.println(num);
33     }
34 
35 }

 

posted @ 2020-11-16 11:43  Oooooooa  阅读(113)  评论(0)    收藏  举报