具有返回类型的Java继承方法

卢卡·萨尔扎尼(Luca Salzani)

这样写我的课程是否正确?在的问题是该方法getPrice()Item类。每个项目都需要有一个getPrice()但我实际上无法退货。所以我用射击了this.getPrice()我的价格ProductItem有没有更可靠/设计更好的解决方案?

class Item {
    String description;

    public Item(String description) {
        this.description = description;
    }

    double getPrice(){return this.getPrice();} //TODO Correct like this?
}

class ProductItem extends Item {
    int amount;
    double pricePerUnit;

    public ProductItem(String description, int amount, double pricePerUnit)         {
        super(description);
        this.amount = amount;
        this.pricePerUnit = pricePerUnit;
    }

    @Override
    double getPrice(){
        return amount * pricePerUnit;
    }
}
乔恩·斯基特

听起来Item应该是一个抽象类,然后getPrice()是一个抽象方法:

public abstract class Item {
    private final String description;

    public Item(String description) {
        this.description = description;
    }

    public abstract double getPrice();

    public String getDescription() {
        return description;
    }
}

这意味着您将无法写

Item item = new Item("foo"); // Invalid, because Item is abstract

但是你可以这样写:

Item item = new ProductItem("foo", 10, 2.0);
double p = item.getPrice(); // 20.0

您声明的每个具体(非抽象)子类都必须重写getPrice()并提供实现。

有关更多详细信息,请参见Java教程抽象类和方法部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何继承具有不同泛型返回类型的方法

从继承Java方法的返回类型

继承具有改进的返回类型的接口

具有相反类型参数的继承的返回类型

具有多个继承类的通用返回类型的自引用方法

如何强制子类覆盖具有更具体返回类型的继承方法

在Java中重写具有不同返回类型的方法?

具有多重继承的C ++协变返回类型错误

具有多值返回类型错误的类继承

Java类具有2个具有相同函数签名但返回类型不同的方法

具有Readonly <>类型的继承

具有多种返回类型的接口方法

具有通用返回类型的覆盖方法

具有多种返回类型的方法

具有不同返回类型的方法重载

方法必须具有返回类型

Java / JPA | 查询具有指定的继承类型

具有泛型类型继承的Java @SuppressWarnings(“ unchecked”)的语法

Java:有没有办法在枚举中获取具有不同返回类型的方法?

具有返回类型的Java方法无需返回语句即可编译

java中的方法重写中,两个方法可以具有不同的返回类型吗?

Python类型注释:继承方法的返回类型

创建一个返回具有现有类继承关系的不同类型的函数

具有变量返回类型和变量输入参数的Java方法

就是Java破坏了与具有非空返回类型setter方法,自己的规则?

为什么此Java方法似乎具有两种返回类型?

Java泛型-覆盖抽象方法并具有子类的返回类型

如何使用JUnit在Java中测试具有布尔返回类型的方法

具有继承接口的Java Overload方法