Java 对象不是抽象的,并且不重写抽象方法
如果之前有人问过这个问题,我会道歉,尽管我确实环顾了四周,没有找到适合我具体问题的答案。不管怎样,我正在尝试建立一个销售甜点的商店模型,这些甜点都是从一个特定的甜点超类派生出来的 当我试图运行程序来测试我的类时,我得到一个错误,即“Java 对象不是抽象的,并且不重写抽象方法,java,class,oop,inheritance,abstract,Java,Class,Oop,Inheritance,Abstract,如果之前有人问过这个问题,我会道歉,尽管我确实环顾了四周,没有找到适合我具体问题的答案。不管怎样,我正在尝试建立一个销售甜点的商店模型,这些甜点都是从一个特定的甜点超类派生出来的 当我试图运行程序来测试我的类时,我得到一个错误,即“Cookie不是抽象的,也不是抽象的方法getPrice()在甜点公共类中,Cookie扩展了甜点。我在另一个名为Fruit的类中遇到了相同的错误,但它或多或少与Cookie完全相同,只是有一些不同的成员变量和方法名 下面是甜点超类: public abstract
Cookie
不是抽象的,也不是抽象的方法getPrice()
在甜点
公共类中,Cookie扩展了甜点
。我在另一个名为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;
}
}
我似乎无法正确设置格式,但是冒号后面的行应该是代码块的一部分,以及代码块后面的大括号
提前感谢您的帮助!您的
甜点
类有一个抽象方法double getPrice()
,并且Cookie
扩展了它,因此Cookie
需要实现getPrice()
或者是抽象的,以消除此错误
代码显然不是在当前状态下编译的,但请这样想——如果我们要实例化
Cookie
,它的double-getPrice()
方法是从它的超类甜点
继承的,因此该方法可以被调用,但它在Cookie
或甜点
中都没有实现,因此调用它的结果将是未指定的。Java在编译时会看到这一点,因此可以防止您尝试生成定义不正确的代码
代码显然不是在当前状态下编译的,但请这样想——如果我们要实例化
Cookie
,它的double-getPrice()
方法是从它的超类甜点
继承的,因此该方法可以被调用,但它在Cookie
或甜点
中都没有实现,因此调用它的结果将是未指定的。Java在编译时会看到这一点,因此可以防止您尝试生成定义不正确的代码
abstract
methodgetPrice()
Cookie.java
必须为它提供定义。(除非它本身是抽象的。)。
如果我们有像燕麦粥这样的东西,人们就会这么做
ChocolateChipCookie
这将是确定的类别。)
由于git markdown的问题,我很快就重新输入了材料,并获得了
我假设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();
}
}
因为
Cookie.java
扩展了summer.java
,后者具有
abstract
methodgetPrice()
Cookie.java
必须为它提供定义。(除非它本身是抽象的。)。
如果我们有像燕麦粥这样的东西,人们就会这么做
ChocolateChipCookie
这将是确定的类别。)
由于git markdown的问题,我很快就重新输入了材料,并获得了
我假设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();
}
}
mmmmmm….cookies…..我有理由相信,您的错误消息实际上抱怨
Cookie
没有覆盖Desert.getPrice()
(即,您的问题会删除一个关键字“覆盖”).这有帮助吗?如果没有,到底是什么让您对错误消息感到困惑?嗯…饼干…我有理由相信您的错误消息实际上抱怨Cookie
没有覆盖Desert.getPrice()
(即,您的问题会删除一个关键字“覆盖”).这有帮助吗?如果没有,到底是什么让您对错误消息感到困惑?