笔记本电脑
笔记本电脑(laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。
案例分析
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
- USB接口,包含开启功能、关闭功能
- 笔记本类,包含运行功能、关机功能、使用USB设备功能
- 鼠标类,要实现USB接口,并具备点击的方法
- 键盘类,要实现USB接口,具备敲击的方法
USB.java
package computer;
public interface USB {
void open();
void close();
}
Keyboard.java
package computer;
public class Keyboard implements USB {
@Override
public void open() {
System.out.println("keyboard open");
}
@Override
public void close() {
System.out.println("keyboard close");
}
public void type() {
System.out.println("type");
}
}
Mouse.java
package computer;
public class Mouse implements USB {
@Override
public void open() {
System.out.println("mouse open");
}
@Override
public void close() {
System.out.println("mouse close");
}
public void click() {
System.out.println("click");
}
}
Laptop.java
package computer;
public class Laptop{
public void run() {
System.out.println("PC run");
}
//多态方式传入参数
public void useUSB(USB usb) {
// 判断是否有USB设备
if (usb != null) {
//连接USB设备
usb.open();
//判断USB设备类型,类型转换,调用特有的方法
if (usb instanceof Keyboard) {
((Keyboard) usb).type();
Keyboard k = (Keyboard) usb;
k.type();
} else if (usb instanceof Mouse) {
((Mouse) usb).click();
Mouse m = (Mouse) usb;
m.click();
}
//拔出USB设备
usb.close();
}
}
public void shutDown() {
System.out.println("PC shutDown");
}
}
TestPC.java
package computer;
public class TestPC {
public static void main(String[] args) {
Laptop laptop = new Laptop();
//开启笔记本
laptop.run();
//接口多态创建鼠标对象
USB u1 = new Mouse();
//多态对象作为参数传入
laptop.useUSB(u1);
//接口多态创建键盘对象
USB u2 = new Keyboard();
//多态对象作为参数传入
laptop.useUSB(u2);
//关闭笔记本
laptop.shutDown();
}
}