使用接口模拟电脑连接 usb 设备
USB 接口
public interface USB {
// 打开设备
public abstract void open();
// 关闭设备
public abstract void close();
}
键盘类
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 Mouse implements USB {
@Override
public void open() {
System.out.println("打开鼠标");
}
@Override
public void close() {
System.out.println("关闭鼠标");
}
public void click() {
System.out.println("鼠标点击");
}
}
电脑类
import java.security.Key;
public class Computer {
public void powerOn() {
System.out.println("电脑开机");
}
public void powerOff() {
System.out.println("电脑关机");
}
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();
}
}
调用
public class Test {
public static void main(String[] args) {
// 创建一台电脑
Computer computer = new Computer();
// 开机
computer.powerOn();
// 连接鼠标(向上转型)
USB usbMouse = new Mouse();
computer.useDevice(usbMouse);
// 连接键盘,用实现类对象的写法,会自动发生向上转型
Keyboard keyboard = new Keyboard();
computer.useDevice(keyboard);
// 关机
computer.powerOff();
}
}