编写静态方法:遍历Vehicle数组并打印每个对象的注册号
解决方案
首先,我们先补全Car和Truck这两个子类的示例代码(它们需要继承Vehicle类,才能保证多态特性正常工作):
public class Car extends Vehicle { // 可根据需求添加Car特有的属性与方法 public Car(String rego) { super(rego); // 调用父类构造方法初始化注册号 } } public class Truck extends Vehicle { // 可根据需求添加Truck特有的属性与方法 public Truck(String rego) { super(rego); // 调用父类构造方法初始化注册号 } }
接下来编写你需要的静态方法,我们可以把它放在一个工具类里(比如VehicleUtils)来复用:
public class VehicleUtils { // 静态方法:接收Vehicle数组,打印每个对象的注册号 public static void printRegistrationNumbers(Vehicle[] vehicles) { // 先判断数组是否为空,避免空指针异常 if (vehicles == null) { System.out.println("车辆数组为空"); return; } // 遍历数组中的每个Vehicle对象(包括其子类实例) for (Vehicle vehicle : vehicles) { // 利用多态特性,不管是Vehicle、Car还是Truck,都能调用父类的getRegistrationNumber方法 if (vehicle != null) { // 防止数组中存在null元素导致报错 System.out.println(vehicle.getRegistrationNumber()); } else { System.out.println("数组中存在空的车辆对象"); } } } }
实现逻辑说明
因为Car和Truck都继承自Vehicle类,且没有重写getRegistrationNumber()方法(如果后续需要自定义子类的注册号逻辑,直接重写该方法即可,多态会自动调用子类的实现),所以不管数组里的元素是Vehicle、Car还是Truck的实例,我们都可以通过Vehicle类型的引用直接调用getRegistrationNumber()方法,拿到对应对象的注册号。
测试示例
你可以写一个主类来验证这个方法的功能:
public class Main { public static void main(String[] args) { Vehicle[] vehicles = { new Vehicle("ABC123"), new Car("XYZ789"), new Truck("LMN456"), null // 测试数组中的空元素情况 }; VehicleUtils.printRegistrationNumbers(vehicles); } }
运行后会输出:
ABC123 XYZ789 LMN456 数组中存在空的车辆对象
内容的提问来源于stack exchange,提问作者user430574
相关产品推荐
相关产品推荐

