道歉,如果这个问题已经被问过,但我没有环顾四周,没有找到适用的答案,我的特定问题。反正,我试图模拟一个商店出售这些都从一个特定的甜品超衍生甜点。
当我尝试运行程序来测试我的课,我得到一个错误说“Cookie
不是抽象的,不以getPrice()
公共类Dessert
抽象方法Cookie extends Dessert
。我收到一个名为水果另一大类相同的错误,但它更或更小的精确相同的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;
}
}
我似乎无法得到正确的格式,但紧跟在冒号线应该是代码块的一部分。以及块以下大括号。
先谢谢您的帮助!
由于Cookie.java
延伸Dessert.java
和后者具有abstract
方法getPrice()
Cookie.java
必须为它提供的定义。 (除非它本身是抽象的。一会做,如果我们拥有的东西,如OatmealCookie
ChocolateChipCookie
那将是一定的阶级。)
我赶紧重新打字的材料,因为这些问题git的降价并得到了这些编译。我假设价格Cookie
应该仅仅是每打价格,并添加适当的定义它:
public abstract class Dessert {
protected final String name;
public Dessert (String name) {
this.name = name;
}
public final String getName() {
return name;
}
public abstract double getPrice ();
}
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;
}
public double getPrice() {
return getPricePerDozen();
}
}
您Dessert
类有一个抽象方法double getPrice()
和Cookie
扩展,所以Cookie
需要实现getPrice()
或也是为了抽象摆脱这种错误的。
该代码显然不其当前状态编译,但认为它是这样的 - 如果我们实例化一个Cookie
,其double getPrice()
方法是从它的超类继承Dessert
,因此该方法将存在被调用,但它有在任一Cookie
或Dessert
,因此调用它的结果没有实现将是不确定的。 Java的认为这在编译时间,所以会阻止您尝试生成定义错误代码。