无法应用父类中的构造函数

我正在尝试编写一个程序,它采用不同形状的地毯,并创建一个地毯对象,其中包含在子类中定义的某些变量。 我的代码是

public abstract class Carpet{ protected int area = 0; protected double unitPrice = 0; protected double totalPrice = 0.0; protected String carpetID; public Carpet(String id, double thisPrice){ carpetID = id; unitPrice = thisPrice; } public String getCarpetId(){ return carpetID; } public String toString(){ String carpet = new String("\n" + "The CarpetId:\t\t" + getCarpetId() + "\nThe Area:\t\t" + area + "\nThe Unit Price\t\t" + unitPrice + "\nThe Total Price\t" + totalPrice + "\n\n"); return carpet; } public abstract void computeTotalPrice(); } 

而子类是

 public class CircleCarpet extends Carpet{ private int radius; public CircleCarpet(String id, double priceOf, int rad){ radius = rad; super.unitPrice = priceOf; computeTotalPrice(); } public void computeTotalPrice(){ super.area = radius * radius * 3; super.totalPrice = area * unitPrice; } public String toString(){ String forThis = new String("\nThe Carpet Shape:\tCircle\nThe radius:\t\t" + radius + "\n"); return forThis + super.toString(); } } 

但每当我尝试编译子类时,我都会收到错误

 11: error: constructor Carpet in class Carpet cannot be applied to given types; public CircleCarpet(String ID, double priceOf, int rad){ ^ required: String,double found: no arguments reason: actual and formal argument lists differ in length 1 error Tool completed with exit code 1 

我不知道该怎么做才能解决它。

由于你的超类没有no-args default constructor,你需要使用super()从你的子类构造函数显式调用你的超类构造函数。不要这必须是你的子类构造函数中的第一行。

  public CircleCarpet(String ID, double priceOf, int rad){ super(ID, priceOf) radius = rad; super.unitPrice = priceOf; computeTotalPrice(); } 

一个建议:

遵循Java命名约定,变量名应该是camelCase。 i。,在这种情况下, idID更合适。