gpt4 book ai didi

java - java中方法的继承和重写

转载 作者:行者123 更新时间:2023-12-01 22:25:20 24 4
gpt4 key购买 nike

我正在尝试处理继承问题。我有一个类结构,由一个接口(interface)(Aeroplane)、一个抽象类(Aeroplane 实现)组成,该抽象类实现与两个类一致的​​方法,以及两个子类:一架客机和一架大型喷气式飞机。

客运和大型喷气式飞机各自具有不同的燃油容量,因此包含以下字段:

private static final int MAX_FUEL_CAPACITY = 49;

我编写了一个方法 addFuel,它强制执行某些限制:

我最初在每堂课中都有以下内容,但认为这是不好的做法,因为有很多重复:

      Integer addFuel(int litres) {

if (litres < 1) {

throw IndexOutOfBoundsException("entered fuel volume must be greater than zero. Zero litres entered.")
}

if (fuelInLitres == MAX_TANK_CAPACITY) {

throw IndexOutOfBoundsException("tank is at full capacity. Zero litres entered.")

}

if (litres + fuelInLitres > MAX_TANK_CAPACITY) {

throw IndexOutOfBoundsException("entered fuel volume is too large - tank does not have sufficient capacity. Zero litres entered.")
}

fuelInLitres += litres;
}

所以我最终在我的抽象类中得到了以下内容:

 Integer addFuel(int litres) {

if (litres < 1) {

throw IndexOutOfBoundsException("entered fuel volume must be greater than zero. Zero litres entered.")
}

}

每个子类中都有这个,但我也看不出这是正确的?

     Integer addFuel(int litres) {

super.addFuel(litres)

if (fuelInLitres == MAX_TANK_CAPACITY) {

throw IndexOutOfBoundsException("tank is at full capacity. Zero litres entered.")

}

if (litres + fuelInLitres > MAX_TANK_CAPACITY) {

throw IndexOutOfBoundsException("entered fuel volume is too large - tank does not have sufficient capacity. Zero litres entered.")
}

fuelInLitres += litres;
}

最佳答案

您应该在基类中添加 getMaxFuelCapacity() 方法,并在两个子类中为其提供两种不同的实现。然后,您将能够将 addFuel() 中的所有剩余逻辑移至基类。

关于java - java中方法的继承和重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28915744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com