gpt4 book ai didi

java - 接口(interface)、类和子类继承

转载 作者:行者123 更新时间:2023-12-02 05:56:05 32 4
gpt4 key购买 nike

我有一个父类 Fruit 和子类 FruitUnitFruitWeightFruitVolume 描述不同类型如何购买水果。

我必须创建一个接口(interface)来实现方法 payFruit(),因为 Fruit 的所有子类都必须实现此方法。

interface IFruitPayment {
double payFruit();
}

假设计算 payFruit() 的方法对于每个子类都不同(数量*价格、单位*价格、重量*价格),我如何创建任何父Fruit 对象并从子类访问方法 payFruit() ?

在父类中实现返回 0 的方法 payFruit() 可以解决该问题,因为子类可以覆盖它,但它似乎不正确。

假设我有一个水果数组列表,我想迭代它们以获取方法 payFruit() 的值。

实现这一目标的最佳、最干净的方法是什么?

简介:

在水果店里,所有水果都有名称和底价。商店以三种方式出售水果:统一、重量和体积。总价的计算方法是将基本价格乘以单位数量、重量或体积(视情况而定)。任何类型的水果(例如香蕉、橙子、苹果)都可以按单位、按重量或按体积出售。它旨在开发具有类层次结构的 Java 项目。 FruitUnit、FruitWeight 和 FruitVolume 类继承自 Fruit 类。还应该有一个 Basket 类来代表要购买的各种水果。该类应包含以下方法:

  1. 将购买的指定水果放入购物篮;
  2. 计算所购买水果的总值(value);
  3. 计算特定类型水果(水果名称)的总消费金额

为了与其他项目的类兼容,在各个类中使用的执行支付金额计算的方法将具有名称 payFruit、返回类型 double 且无参数。该方法必须在接口(interface)中声明。

注意:我知道这对于我的情况来说似乎很特殊,对其他人来说并不是很有帮助,但我发现这个类层次结构使用起来有点困惑。

最佳答案

好的,基本上您希望您的子类实现 IFruitPayment 接口(interface)。

如果您的每个子类都实现该接口(interface),您就可以将它们用作该接口(interface)。

List<IFruitPayment> fruitPayments = new ArrayList<>():
fruitPayments.add(new FruitUnit());
fruitPayments.add(new FruitVolume());
fruitPayments.add(new FruitWeight());
for(IFruitPayment payment:fruitPayments) {
System.out.println(payment.payFruit());
}

关于java - 接口(interface)、类和子类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56011721/

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