笔记本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 }