【发布时间】:2019-02-06 22:15:45
【问题描述】:
抱歉,如果之前有人问过这个问题,但我确实环顾四周,找不到适用于我的具体问题的答案。无论如何,我正在尝试为一家销售甜点的商店建模,这些甜点都派生自特定的 Dessert 超类。
当我尝试运行程序来测试我的类时,我收到一条错误消息,说“Cookie 不是抽象的,并且在Dessert 公共类Cookie extends Dessert 中没有抽象方法getPrice()。我得到了同样的结果另一个名为 Fruit 的类出错,但它或多或少与 Cookie 完全相同,只是成员变量和方法名称不同。
这里是甜点超类:
public abstract class Dessert {
/** Name of the dessert item. */
protected final String name;
/**
* Constructs a new dessert item.
* @param name Name of the dessert.
*/
public Dessert(String name) {
this.name = name;
}
/**
* Get name of the dessert.
* @return dessert name
*/
public final String getName() {
return name;
}
/**
* Get the price of the dessert.
* @return Dessert price
*/
public abstract double getPrice();
}
这里是 Cookie 子类:
public class Cookie extends Dessert {
private int number;
private double price;
public Cookie (String name, int number, double price) {
super(name);
this.number = number;
this.price = price;
}
public int getItemCount() {
return number;
}
public double getPricePerDozen() {
return (price / 12) * number;
}
}
我似乎无法正确格式化,但紧跟在冒号后面的行应该是代码块的一部分。以及块后面的花括号。
提前感谢您的帮助!
【问题讨论】:
-
mmmmmm....饼干.....
-
我有理由相信您的错误消息实际上抱怨
Cookie没有覆盖Desert.getPrice()(即您的问题删除了一个关键词“覆盖”)。这有帮助吗?如果不是,究竟是什么让您对错误消息感到困惑?
标签: java class oop inheritance abstract