一、案例分析
定义USB接口,具备最基本的开启和关闭功能。鼠标和键盘也必须遵守USB规范
1、USB接口,包含打开设备和关闭设备功能
2、笔记本类,包含开机、关机、使用USB设备功能
3、鼠标类,实现USB接口,具备点击的方法
4、键盘类,实现USB接口,具备敲击的方法
笔记本电脑类:(使用接口)
开机 powerOn();
关机 powerOff();
使用设备 usbDevice(USB usb)
鼠标类:(实现接口)
打开鼠标
关闭鼠标
键盘类:(实现接口)
打开键盘
关闭键盘
二、代码实现
USB接口
package Day10_Demo05;
public interface USB {
public abstract void open();//打开设备
public abstract void close();//关闭设备
}
电脑类:
package Day10_Demo05;
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) {//判断USB设备是什么
Mouse mouse=(Mouse) usb;//向下转型
mouse.click();
}else if(usb instanceof Keyboard) {
Keyboard keyboard=(Keyboard) usb;//向下转型
keyboard.type();
}
usb.close();//关闭设备
}
}
鼠标类:
package Day10_Demo05;
//鼠标就是一种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("鼠标点击");
}
}
键盘类:
package Day10_Demo05;
//键盘就是一种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("键盘输入");
}
}
案例演示:
package Day10_Demo05;
public class DemoMain {
public static void main(String[] args) {
//创建一个笔记本电脑
Computer computer=new Computer();
computer.powerOn();
//准备一个鼠标
//首先向上转型,把鼠标当为USB设备
USB usbMouse=new Mouse();
//参数是USB类型,正好传递进去就是USB鼠标
computer.useDevice(usbMouse);
//创建一个USB键盘
Keyboard keyboard=new Keyboard();//没有使用多态写法
//方法参数是USB类型,传递进去是实现类对象,虽然不是USB类型,但是也是正确的
computer.useDevice(keyboard);//正确写法,也发生了自动向上转型
computer.useDevice(new Keyboard());//也是正确写法,也自动发生了向上转型
computer.powerOff();
}
}
/*输出结果:
笔记本电脑开机
打开鼠标
鼠标点击
关闭鼠标
打开键盘
键盘输入
关闭键盘
打开键盘
键盘输入
关闭键盘
笔记本电脑关机
*/