You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写静态方法:遍历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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:10:36