当超类的参数较少时,如何向子类构造函数添加更多参数?

时间:2018-05-21 03:48:12

标签: java

我试着寻找这个问题的答案,但我也是 1.没有正确地问 2.不直接思考

基本上,我的作业是一个模拟杂货店。我有一个Item类,我需要用于子类,它将继承Item类的特征。 (继承)

以下是我目前为本课程所做的工作以及我的期望

    public class Baguette extends Item {

 int price;
 String name;

public Baguette(String name, int price){
    this.name = name;
    this.price = price;

}

 @Override
 public String getName(){
   return name;

   }
 public int getCost(){
     return price;
     }

}

现在这里是这个Baguette类的子类

    public class FlavoredBaguette extends Baguette {
String name;
int price;
String flavor;
int costFlav;

public FlavoredBaguette(String name, int price, String flavor, int costFlav) 
{
    this.name = name; 
    this.price = price; 
    this.flavor = flavor;
    this.costFlav = costFlav;
}
}

执行此操作后,我在行中收到此错误 类长方形的Baguette构造函数不适用于给定类型 required:string,int 发现:没有争论 原因:实际和正式的参数列表长度不同

我知道它与不同的论点数量有关,但我在这里一无所知。谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

您需要先调用Baguette的构造函数super(name, price);,这意味着FlavoredBaguette不需要name或{{1因为它将从price

继承这些
Baguette

答案 1 :(得分:1)

对于扩展,您不需要声明超类的字段。同样在构造函数中,只需使用参数name和price调用super()

public class FlavoredBaguette extends Baguette {
    String flavor;
    int costFlav;

public FlavoredBaguette(String name, int price, String flavor, int costFlav){
    super(name, price);
    this.flavor = flavor;
    this.costFlav = costFlav;
}

编辑:看起来MadProgrammer打败了我:c