笔记本电脑
笔记本电脑( laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。
定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守
USB规范,实现USB接口,否则鼠标和键盘的生产出来也无法使用。
案例分析
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
- USB 接口,包含开启功能、关闭功能
- 笔记本类,包含运行功能、关机功能、使用 USB设备功能
- 鼠标类,要实现 USB接口,并具备点击的方法
- 键盘类,要实现 USB接口,具备敲击的方法
定义USB接口:
public interface USB {
public abstract void open();//打开设备
public abstract void close();//关闭设备
}
定义鼠标类:
public class Mouse implements USB {
@Override
public void open() {
System.out.println("打开鼠标!");
}
@Override
public void close() {
System.out.println("关闭鼠标!");
}
public void onClick(){
System.out.println("点击鼠标!");
}
}
定义键盘类:
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 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.onClick();
}else if(usb instanceof Keyboard){
Keyboard keyboard = (Keyboard) usb;//向下转型
keyboard.type();
}
usb.close();
}
}
测试类,代码如下:
public class DemoMain {
public static void main(String[] args) {
Computer computer = new Computer();
computer.powerOn();
/*//准备一个鼠标,供电脑使用
Mouse mouse = new Mouse();*/
//首先向上转型
USB usbMouse = new Mouse();
//参数是USB类型,我正好传递进去的就是USB鼠标
computer.useDevice(usbMouse);
//创建一个USB键盘
Keyboard keyboard = new Keyboard();//没有使用多态
//方法参数是USB类型,传递进去的是实现类对象
computer.useDevice(keyboard);//正确写法,也发生了向上转型。
computer.powerOff();
}
}