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
method
getPrice()
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
method
getPrice()
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()
(即,您的问题会删除一个关键字“覆盖”).这有帮助吗?如果没有,到底是什么让您对错误消息感到困惑?