交通工具调度系统(核心:继承 + 多态 + final + 方法重写)

张开发
2026/4/16 19:48:20 15 分钟阅读

分享文章

交通工具调度系统(核心:继承 + 多态 + final + 方法重写)
需求:定义父类Vehicle交通工具包含final方法getLicense()获取牌照规则禁止子类重写、普通方法run()子类Car、Bus继承Vehicle重写run()方法实现不同运行逻辑定义VehicleDispatcher调度类使用多态统一调度所有交通工具禁止创建Vehicle父类对象可结合抽象类优化final方法保护核心逻辑不被篡改。打印结果:特斯拉小汽车在公路行驶最高时速120km/h交通工具牌照统一由交通局颁发------------------------宇通公交车在专用车道行驶承载乘客交通工具牌照统一由交通局颁发思路分析1. 设计抽象父类 Vehicle把 Vehicle 定义为 抽象类目的是禁止外界直接创建父类对象只作为被继承的模板。在父类中定义 final 方法 getLicense ()final 修饰 → 子类不能重写、不能覆盖保证牌照规则统一、安全、不被篡改。方法功能固定输出 “交通工具牌照统一由交通局颁发”。把 run () 定义为 抽象方法因为每种交通工具行驶方式不一样父类无法统一实现。强制子类必须重写保证系统结构规范public class Vehicle { //获取牌照规则 public final void getLicense(){ System.out.println(交通工具牌照统一由交通局颁发); } //普通方法 public void run(){ System.out.println(交通工具在运行); } }2. 设计子类 Car小汽车继承自 Vehicle获得父类所有可继承功能。必须重写 run () 方法实现小汽车的行驶逻辑输出 “特斯拉小汽车在公路行驶最高时速 120km/h”。不能重写父类的 getLicense ()因为它是 final。public class Car extends Vehicle { String name; public Car(String name) { this.name name; } Override public void run() { System.out.println(name 小汽车在公路行驶最高时速120km/h); } }3. 设计子类 Bus公交车同样继承 Vehicle。重写 run () 方法实现公交车的行驶逻辑输出 “宇通公交车在专用车道行驶承载乘客”。同样不能修改 getLicense ()。public class Bus extends Vehicle{ String name; public Bus(String name) { this.name name; } Override public void run() { System.out.println(name 公交车在专用车道行驶承载乘客); } }4. 设计调度类 VehicleDispatcher多态核心作用统一调度所有交通工具不管是汽车、公交车都能用同一个方法管理。设计一个方法参数类型为 父类 Vehicle利用多态特性父类引用可以指向任意子类对象。方法内部统一调用v.run () → 自动执行对应子类的行驶逻辑多态。v.getLicense () → 执行父类固定的牌照规则。好处扩展新交通工具如 Bike、Train时调度类完全不用改符合面向对象扩展原则。public class VehicleDispartcher { public void dispatch(Vehicle v){ v.run(); v.getLicense(); } }5. 测试类执行流程创建调度器对象。创建 Car 对象、Bus 对象用父类 Vehicle 接收多态写法。调用调度器的方法分别传入 car 和 bus。系统自动根据对象实际类型执行对应子类的 run ()并统一执行父类的 getLicense ()。最终输出题目要求的结果import java.util.ArrayList; public class VehicleTest { public static void main(String[] args) { //创建对象 VehicleDispartcher vehicleDispartcher new VehicleDispartcher(); //创建集合 ArrayListVehicle vehicles new ArrayList(); vehicles.add(new Car(特斯拉)); vehicles.add(new Bus(宇通)); //遍历集合 for (int i 0; i vehicles.size(); i) { Vehicle v vehicles.get(i); vehicleDispartcher.dispatch(v); if (i ! vehicles.size() - 1){ System.out.println(--------------------------------); } } } }

更多文章