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

Java继承中跨类实现Car对象燃油消耗求和方法的疑问

解决Java中Calculate类sumFuel方法的实现问题

我来帮你一步步搞定这个需求哈!先从基础的两个Car对象求和说起,再扩展到数组的情况,保证你能看懂~

一、基础版本:直接传入两个Car对象求和

首先,咱们得先把类的结构补全,确保fuel属性的访问权限没问题(最好用封装,给Car加getter方法,而不是直接暴露public属性)。

完整代码示例

package javaapplication25;

// 父类Vehicle
class Vehicle {
    // 假设fuel是父类的属性,子类Car继承
    private double fuel;

    public Vehicle(double fuel) {
        this.fuel = fuel;
    }

    // 提供getter方法供子类或外部访问
    public double getFuel() {
        return fuel;
    }
}

// 子类Car继承Vehicle
class Car extends Vehicle {
    public Car(double fuel) {
        super(fuel); // 调用父类构造方法初始化fuel
    }
}

// 计算类Calculate
class Calculate {
    // 实现两个Car对象的fuel求和方法
    public double sumFuel(Car car1, Car car2) {
        // 通过getter获取fuel值并求和
        return car1.getFuel() + car2.getFuel();
    }
}

public class JavaApplication25 {
    public static void main(String[] args) {
        // 创建两个Car对象
        Car c = new Car(50.0);
        Car c2 = new Car(30.0);

        // 实例化Calculate类,调用sumFuel方法
        Calculate calculator = new Calculate();
        double totalFuel = calculator.sumFuel(c, c2);
        System.out.println("总油量:" + totalFuel); // 输出80.0
    }
}

关键点说明

  • 如果你的fuel属性是public的,那可以直接写car1.fuel + car2.fuel,但更推荐用getter方法,符合面向对象的封装原则。
  • sumFuel是普通的实例方法,需要先创建Calculate的对象再调用;如果想做成静态方法,直接加static修饰,调用时用Calculate.sumFuel(c, c2)即可。

二、扩展版本:使用Car对象数组求和

如果后续需要处理多个Car对象,用数组会更灵活,这里分两种常见的实现方式:

方式1:把数组作为sumFuel方法的参数传入

这种方式适合每次求和的数组不同的场景,灵活性更高:

class Calculate {
    // 传入Car数组,计算所有元素的fuel总和
    public double sumFuel(Car[] cars) {
        double total = 0.0;
        if (cars == null || cars.length == 0) {
            return total; // 空数组直接返回0,避免空指针
        }
        for (Car car : cars) {
            total += car.getFuel();
        }
        return total;
    }
}

// main方法中的调用
public static void main(String[] args) {
    Car c = new Car(50.0);
    Car c2 = new Car(30.0);
    Car c3 = new Car(20.0);
    // 创建Car数组
    Car[] carArray = {c, c2, c3};

    Calculate calculator = new Calculate();
    double totalFuel = calculator.sumFuel(carArray);
    System.out.println("总油量:" + totalFuel); // 输出100.0
}

方式2:把数组作为Calculate类的成员变量

如果数组是固定的(比如一组固定的车辆),可以把数组作为Calculate的成员,通过构造方法或setter初始化:

class Calculate {
    private Car[] cars;

    // 通过构造方法传入数组
    public Calculate(Car[] cars) {
        this.cars = cars;
    }

    // 或者提供setter方法修改数组
    public void setCars(Car[] cars) {
        this.cars = cars;
    }

    // 直接使用成员数组求和
    public double sumFuel() {
        double total = 0.0;
        if (cars == null || cars.length == 0) {
            return total;
        }
        for (Car car : cars) {
            total += car.getFuel();
        }
        return total;
    }
}

// main方法中的调用
public static void main(String[] args) {
    Car[] carArray = {new Car(50.0), new Car(30.0), new Car(20.0)};
    // 初始化Calculate时传入数组
    Calculate calculator = new Calculate(carArray);
    double totalFuel = calculator.sumFuel();
    System.out.println("总油量:" + totalFuel); // 输出100.0
}

小提示

  • 不管用哪种方式,一定要注意空指针问题:比如传入的Car对象可能为null,或者数组本身为null,最好在方法里做非空判断,避免运行时异常。
  • 如果后续需要处理更多Vehicle的子类(比如Truck),可以把方法参数改成Vehicle类型,这样扩展性更强,只要是Vehicle的子类都能传入求和~

内容的提问来源于stack exchange,提问作者stack.name

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:11:15