以下是用 Java 实现上述需求的代码示例: ```java // PCI 抽象类 abstract class PCI { // 设备启动方法 public abstract void start(); // 设备关闭方法 public abstract void stop(); } // 显卡类,继承自 PCI class DisplayCard extends PCI { @Override public void start() { System.out.println("显卡启动"); } @Override public void stop() { System.out.println("显卡关闭"); } } // 声卡类,继承自 PCI class SoundCard extends PCI { @Override public void start() { System.out.println("声卡启动"); } @Override public void stop() { System.out.println("声卡关闭"); } } // 网卡类,继承自 PCI class NetCard extends PCI { @Override public void start() { System.out.println("网卡启动"); } @Override public void stop() { System.out.println("网卡关闭"); } } // 主板类 class MainBoard { PCI[] pciDevices = new PCI[5]; // 表示 5 个 PCI 插槽 // 向主板插入指定 PCI 设备 public void add(PCI device) { for (int i = 0; i < pciDevices.length; i++) { if (pciDevices[i] == null) { pciDevices[i] = device; break; } } } // 依次启动主板上的所有 PCI 设备 public void run() { for (PCI device : pciDevices) { if (device!= null) { device.start(); } } } // 依次关闭主板上的所有 PCI 设备 public void stop() { for (int i = pciDevices.length - 1; i >= 0; i--) { if (pciDevices[i]!= null) { pciDevices[i].stop(); } } } } // 计算机类 class Computer { private MainBoard cmb; // 计算机开机,运行主板设备 public void start() { cmb.run(); } // 计算机关机,停止主板设备 public void stop() { cmb.stop(); } } ``` 额外需要注意的逻辑点: 1. 对于插入设备时,如果插槽已满,需要考虑如何处理。 2. 设备的启动和关闭顺序是否有特定的要求,可能需要根据实际情况调整。 3. 代码中的异常处理,例如在插入设备或启动/关闭设备时可能出现的异常情况。 [2024-12-09 08:31:54 | AI写代码神器 | 637点数解答]