笔记本电脑(lappop) 通常具备使用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();//开机
}
Computer类
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 = (Mouse) usb;
mouse.click();
}else if(usb instanceof Keybord){
Keybord keybord = (Keybord) usb;
keybord.input();
}
usb.close();//关闭设备
}
}
Mouse类:
//鼠标是一个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("点击鼠标");
}
}
Keybord类:
//键盘是一个USB设备
public class Keybord implements USB {
@Override
public void open() {
System.out.println("打开键盘!");
}
@Override
public void close() {
System.out.println("关闭键盘!");
}
//键盘特有的方法
public void input(){
System.out.println("键盘的输入!");
}
}
UsbTest测试类:
public class UsbTest {
public static void main(String[] args) {
//首先创建一个笔记本电脑对象
computer computer = new computer();
computer.powerOn();//开机
//准备一个鼠标,供电脑使用
USB usb = new Mouse();//进行向上转型,多态的写法
//参数是usb类型,正好传递进去的就是USB鼠标
computer.useDevice(usb);
//创建一个USB键盘
Keybord keybord = new Keybord();//没有使用多态写法
//方法参数是USB类型,传递进去的是实现类对象
computer.useDevice(keybord);
//computer.useDevice(new Keybord());//等价于上面的两行
computer.powerOff();//关机
}
}
测试结果:
电脑开机
打开鼠标!
点击鼠标
关闭鼠标!
打开键盘!
键盘的输入!
关闭键盘!
电脑关机