【发布时间】:2017-02-06 03:16:53
【问题描述】:
我正在制作一个包含两个子类的超类食物:晚餐和早餐。晚餐和早餐各有两个子类,晚餐有海鲜和鸡肉,而早餐有麦片和煎蛋。现在我只编程了食物和晚餐,但是当我尝试在 main 中编程时,它说我的构造函数是未定义的。
这是我的 Food 超类:
public class Food {
private double price;
private int calories;
private boolean vegan;
public Food(double price, int calories, boolean vegan){
this.price = price;
this.calories = calories;
this.vegan = vegan;
}
public double getPrice(){
return price;
}
public int getCalories(){
return calories;
}
public boolean getVegan(){
return vegan;
}
}
这是我的晚餐子类:
public class Dinner extends Food{
public Dinner(double price, int calories, boolean vegan){
super (price, calories, vegan);
}
}
为了保持这个问题的开放性,我只是在寻找一个更具概念性的答案,以便它可以适用于其他人的问题。如何为超类/子类创建构造函数,以及如何在 main 中使用它?谢谢大家。
P.S.:我知道我可以删除“public Food”构造函数并编写“Food x = new Food;”在 main 但我的 comp sci 老师要求你在每个类中都有一个构造函数:super 或 sub。
编辑:我目前的主要方法是:
public class Main {
public static void main(String[] args){
Food x = new Food();
}
}
我得到“构造函数 Food() 未定义”。我知道我可能遗漏了什么/做错了,所以我只是在寻找如何实际完成这项任务的指导。
【问题讨论】:
-
您得到的确切错误信息是什么?
-
您将提供更多上下文,因为我复制并粘贴了您的类并且在我的主要方法中编码没有问题
-
这里
main方法的邮政编码 -
好吧,如果我执行“Food x = new Food();”,那么我会得到“构造函数 Food() 未定义”。我知道我可能做错了,所以我只是在寻找有关如何使用每个子类中的构造函数完成此任务的概念指导。
-
你没有无参构造函数,需要提供
(double price, int calories, boolean vegan)eg:Food x = new Food(12, 1, false);
标签: java inheritance constructor hierarchy superclass