层次结构中未定义的构造函数
Undefined Constructors in Hierarchy
我正在制作超级class食物,有两个子class:晚餐和早餐。晚餐和早餐各有两个子class,晚餐有海鲜和鸡肉菜肴,早餐有麦片和煎蛋。现在我只编写了 Food 和 Dinner,但是当我尝试在 main 中编写时,它说我的构造函数未定义。
这是我的超级美食class:
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;
}
}
这是我的晚餐子class:
public class Dinner extends Food{
public Dinner(double price, int calories, boolean vegan){
super (price, calories, vegan);
}
}
为了保持这个问题的开放性,我只是在寻找一个更概念化的答案,以便它可以适用于其他人的问题。如何为 super/subclass 创建构造函数以及如何在 main 中使用它?谢谢大家
P.S.: 我知道我可以删除 "public Food" 构造函数并在 main 中写入 "Food x = new Food;" 但是我的 comp sci 老师要求你在每个 [=39] 中都有一个构造函数=]:超级或次级。
编辑:目前我的主要方法是:
public class Main {
public static void main(String[] args){
Food x = new Food();
}
}
我得到 "The constructor Food() is undefined"。我知道我可能遗漏了 something/doing 它错了,所以我只是在寻找有关如何实际完成此任务的指导。
不止一种constructors
。
一种是default constructor
public Food(){
}
每当创建 class 的对象时都会调用它。在这种情况下,如果您创建 Food
class 的对象(如
),将从 main 调用此构造函数
Food obj = new Food();
你在Food
class中定义的那个叫做parameterized constructor
public Food(double price, int calories, boolean vegan){
this.price = price;
this.calories = calories;
this.vegan = vegan;
}
当您创建 Food
class 的对象时将调用此构造函数,例如
Food obj = new Food(20.22, 10, true);
您需要将值作为参数传递才能调用此构造函数。
注意调用哪个构造函数取决于你是否在构造函数调用中传递参数值。
您遇到错误是因为在您的 main
方法中
public class Main {
public static void main(String[] args){
Food x = new Food();
}
您正在调用 Food
class 的默认构造函数,但在 Food
class 中,您定义了一个 parameterized constructor
,它需要 3 个参数.
您需要在创建 class Food
的对象时传递这些参数
例如
Food obj = new Food(20.22, 10, true);
我正在制作超级class食物,有两个子class:晚餐和早餐。晚餐和早餐各有两个子class,晚餐有海鲜和鸡肉菜肴,早餐有麦片和煎蛋。现在我只编写了 Food 和 Dinner,但是当我尝试在 main 中编写时,它说我的构造函数未定义。
这是我的超级美食class:
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;
}
}
这是我的晚餐子class:
public class Dinner extends Food{
public Dinner(double price, int calories, boolean vegan){
super (price, calories, vegan);
}
}
为了保持这个问题的开放性,我只是在寻找一个更概念化的答案,以便它可以适用于其他人的问题。如何为 super/subclass 创建构造函数以及如何在 main 中使用它?谢谢大家
P.S.: 我知道我可以删除 "public Food" 构造函数并在 main 中写入 "Food x = new Food;" 但是我的 comp sci 老师要求你在每个 [=39] 中都有一个构造函数=]:超级或次级。
编辑:目前我的主要方法是:
public class Main {
public static void main(String[] args){
Food x = new Food();
}
}
我得到 "The constructor Food() is undefined"。我知道我可能遗漏了 something/doing 它错了,所以我只是在寻找有关如何实际完成此任务的指导。
不止一种constructors
。
一种是default constructor
public Food(){
}
每当创建 class 的对象时都会调用它。在这种情况下,如果您创建 Food
class 的对象(如
Food obj = new Food();
你在Food
class中定义的那个叫做parameterized constructor
public Food(double price, int calories, boolean vegan){
this.price = price;
this.calories = calories;
this.vegan = vegan;
}
当您创建 Food
class 的对象时将调用此构造函数,例如
Food obj = new Food(20.22, 10, true);
您需要将值作为参数传递才能调用此构造函数。
注意调用哪个构造函数取决于你是否在构造函数调用中传递参数值。
您遇到错误是因为在您的 main
方法中
public class Main {
public static void main(String[] args){
Food x = new Food();
}
您正在调用 Food
class 的默认构造函数,但在 Food
class 中,您定义了一个 parameterized constructor
,它需要 3 个参数.
您需要在创建 class Food
的对象时传递这些参数
例如
Food obj = new Food(20.22, 10, true);