前面学习了接口、多态、向上转型、向下转型、instanceof关键字,本节主要是应用这些知识点实现一个小需求。
笔记本电脑(laptop)通常具备使用usb设备的功能,在生产时,笔记本都预留了可以插入usb设备的usb接口,但具体时什么usb设备,笔记本厂商并不关心,只要符合usb规格的设备都可以。
定义usb接口,具备最基本的开启和关闭功能,鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守usb规范,实现usb接口,否则鼠标和键盘生产出来也无法使用。
USB.java
package Demo0929; public interface USB { public abstract void open(); //打开设备 public abstract void close(); //关闭设备 }
Computer.java
package Demo0929; public class Computer { public void powerOn() { System.out.println("开机"); } public void powerOff() { System.out.println("关机"); } public void useDevice(USB usb) { usb.open(); if(usb instanceof Mouse){ Mouse mouse = (Mouse) usb; //向下转型,使用usb设备特有的方法 mouse.click(); }else if(usb instanceof KeyBoard){ KeyBoard kb = (KeyBoard) usb; kb.input(); } usb.close(); } }
Mouse.java
package Demo0929; public class Mouse implements USB { @Override public void open() { System.out.println("打开鼠标"); } @Override public void close() { System.out.println("关闭鼠标"); } public void click(){ System.out.println("鼠标点击"); } }
KeyBoard.java
package Demo0929; public class KeyBoard implements USB { @Override public void open() { System.out.println("打开键盘"); } @Override public void close() { System.out.println("关闭键盘"); } public void input(){ System.out.println("键盘输入"); } }
mainDemo.java
package Demo0929; import java.security.Key; public class mainDemo { public static void main(String[] args) { Computer computer = new Computer(); computer.powerOn(); //多态写法 USB useMouse = new Mouse(); computer.useDevice(useMouse); //不使用多态 KeyBoard kb = new KeyBoard(); computer.useDevice(kb); computer.powerOff(); } }
输出
开机 打开鼠标 鼠标点击 关闭鼠标 打开键盘 键盘输入 关闭键盘 关机