一、笔记本电脑
笔记本电脑(laptop)通常具备使用USB设备的功能,在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体什么是USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。
二、案例分析
进行描述笔记本,实现笔记本不用USB鼠标,USB键盘
- USB接口,包含打开设备的功能,关闭设备功能
- 笔记本类,包含开机功能,关机功能,使用USB设备的功能
- 鼠标类,要实现USB接口,并具备点击的方法
- 键盘类,要实现USB接口,具备敲击的功能
三、案例实现
public interface USB { public abstract void open();//打开设备 public abstract void close();// 关闭设备 }
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();//关闭设备 } }
//鼠标就是一种USB设备 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("点击鼠标"); } }
//键盘就是一种USB设备 public class Keyboard implements USB { @Override public void open() { System.out.println("打开键盘"); } @Override public void close() { System.out.println("关闭键盘"); } public void type(){ System.out.println("键盘输入"); } }
public class DemoMain { public static void main(String[] args) { //首先创建一个笔记本电脑 Computer computer=new Computer(); computer.powerOn(); //首先进行向上转型 USB usbMouse=new Mouse(); //参数是USB类型,我正好传递进去的就是USB鼠标 computer.usedevice(usbMouse); // 创建一个USB键盘 Keyboard keyboard=new Keyboard(); //方法参数是USB类型 传递进去的是实现类对象 computer.usedevice(keyboard); computer.powerOff(); } }