gpt4 book ai didi

java - 父类中的构造函数不能被应用

转载 作者:行者123 更新时间:2023-12-02 09:05:56 25 4
gpt4 key购买 nike

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

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

我不知道该如何解决它。

最佳答案

由于您的父类(super class)没有无参数默认构造函数,因此您需要使用 super() 从子类构造函数显式调用您的父类(super class)构造函数。 .并不是说这必须是子类构造函数中的第一行。

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

}

建议:

遵循Java命名约定,变量名应采用驼峰命名法。 i.,在这种情况下,idID 更合适。

关于java - 父类中的构造函数不能被应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14649291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com