Java模拟USB接口编程实战:面向接口与多态应用
本教程利用Java面向对象特性模拟计算机USB接口的插拔逻辑。首先定义包含turnOn和turnOff方法的USB接口规范,接着创建Mouse、KeyBoard和MicroPhone等具体实现类。核心逻辑在Computer类中完成,它维护一个USB[]数组用于存储外部设备,并在开机时遍历加载、关机时弹出并重置,最终通过测试类验证该机制的有效运行。
题目要求与设计目标
我们需要通过Java程序模拟使用计算机USB接口驱动外设的过程。设计需满足以下核心需求:
- 接口定义:建立
USB接口,其中必须包含启动设备的turnOn()方法和关闭设备的turnOff()方法。 - 设备实现:创建
Mouse(鼠标)、KeyBoard(键盘)和MicroPhone(麦克风)三个类来实现上述接口,并分别在启动和关闭时打印具体的设备信息。 - 计算机控制:构建
Computer类,具备powerOn()和powerOff()两个关键方法。 - 逻辑细节:开机前需加载所有已插入的USB设备,关机前需安全弹出所有已接入的设备;若未插入设备或设备已全部弹出,系统应有相应的状态提示。
核心代码实现
第1步:定义USB通用接口
目的是确立标准化的行为规范。接口中的方法默认均为抽象方法,因此可以省略 public abstract 修饰符。
package Work4;
public interface USB {
// 开启设备
void turnOn();
// 关闭/弹出设备
void turnOff();
}第2步:实现具体的设备类
以键盘为例,此类实现了USB接口,并重写了启动和关闭时的行为输出。其他设备如鼠标(Mouse)和麦克风(MicroPhone)的实现逻辑完全一致,仅名称有所区别。
package Work4;
public class KeyBoard implements USB{
private String name;
public KeyBoard(String name) {
this.name = name;
}
@Override
public void turnOn() {
System.out.println(name + "键盘加载了");
}
@Override
public void turnOff() {
System.out.println(name + "键盘弹出了");
}
}第3步:构建Computer主机逻辑
Computer类是整个系统的枢纽。它内部持有一个长度为4的USB[]数组(usbs),用于充当物理插槽。主要包含三个操作:
addUSB(USB usb):查找数组中第一个为null的位置,将传入的外设对象存入。powerOn():遍历整个数组,识别非空元素调用其turnOn()进行“加载”。若全为空则提示无设备可加载。powerOff():遍历数组识别非空元素,先调用turnOff()执行“弹出”动作,随后将数组对应位置重置为null。
package Work4;
public class Computer {
// 维护最多4个USB接口的插槽
private USB[] usbs = new USB[4];
// 插入设备,寻找可用插槽
public void addUSB(USB usb) {
for (int i = 0; i < usbs.length; i++) {
if (usbs[i] == null) {
usbs[i] = usb;
break;
}
}
}
// 开机流程
public void powerOn() {
boolean flag = false;
for (int i = 0; i < usbs.length; i++) {
if (usbs[i] != null) {
usbs[i].turnOn(); // 触发多态调用的turnOn
flag = true;
}
}
if (!flag) {
System.out.println("开机前没有需要加载的设备");
}
System.out.println("开机成功!!!!");
}
// 关机流程
public void powerOff() {
boolean flag = false;
for (int i = 0; i < usbs.length; i++) {
if (usbs[i] != null) {
usbs[i].turnOff(); // 触发多态调用的turnOff
usbs[i] = null; // 清空插槽,模拟拔出设备
flag = true;
}
}
if (!flag) {
System.out.println("关机前没有需要弹出的设备");
}
System.out.println("关机成功!!!!");
}
}第4步:运行测试与结果观察
在TestComputer测试类中实例化主机,依次插入罗技鼠标、双飞燕键盘和铁三角麦克风,然后分别执行开关机操作。
package Work4;
public class TestComputer {
public static void main(String[] args) {
Computer c = new Computer();
// 添加设备
c.addUSB(new Mouse("罗技"));
c.addUSB(new KeyBoard("双飞燕"));
c.addUSB(new MicroPhone("铁三角"));
// 第一次开机与关机:正常加载并弹出设备
c.powerOn();
c.powerOff();
// 第二次开机与关机:验证设备全部清除后的状态提示
c.powerOn();
c.powerOff();
}
}上述代码执行后的控制台输出预期如下:
罗技鼠标加载了 双飞燕键盘加载了 铁三角麦克风加载了 开机成功!!!! 罗技鼠标弹出了 双飞燕键盘弹出了 铁三角麦克风弹出了 关机成功!!!! 开机前没有需要加载的设备 开机成功!!!! 关机前没有需要弹出的设备 关机成功!!!!
简要总结
以上就是Java实现模拟USB接口功能的详细内容,更多关于Java面向接口编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













