我知道其他人对我有一个非常类似的问题,我试图将这些答案应用到我的代码中,但它仍然无效,所以我希望你的一个人能够看看我的代码并解释我出错的地方......
这是我的代码:
public class Square extends Rectangle{
String Colour;
public Square (int x, int y, int h, int w, String Co){
super (x,y,h,w);
Colour=Co;
System.out.println("Constructing a Square now");
}
public void showColour(){
System.out.println("The colour of the square is " + Colour);
}
}
第二部分:
public class InheritProgram {
public static void main (String [] args){
Square One= new Square (10,20, 15, 15, "blue");
Square colour =new Square();
colour.showColour();
//GeometricShape center= new displayCenter();
}
}
这就是我得到的错误:
C:\Users\Karen\Documents\Java\Lab8-1\InheritProgram.java:5: error: constructor Square in class Square cannot be applied to given types;
Square colour =new Square();
^
required: int,int,int,int,String
found: no arguments
reason: actual and formal argument lists differ in length
1 error
Tool completed with exit code 1
非常感谢任何帮助
答案 0 :(得分:5)
在这一行:
Square colour =new Square();
...您正在尝试为Square
调用无参数构造函数 - 但您尚未声明一个。您只使用5个参数声明了构造函数,因此您必须使用该参数来创建新实例。
目前尚不清楚为什么要创建第二个实例 - 为什么不在showColour
上拨打One
?
(顺便说一句,我强烈敦促你开始遵循Java命名约定,并使你的字段也是私有的。如果你的缩进与问题中的缩进相符,那么也要修复它 - 它'这将使您的代码更容易阅读。大多数IDE允许您非常轻松地格式化代码。)
答案 1 :(得分:0)
除了上面的答案,你应该注意到堆栈跟踪,它说明了一切。
Square colour =new Square();
required: int,int,int,int,String
found: no arguments
它说它需要(只)构造函数使用params int,int,int,int,String,但是你已经调用了一个no-arg构造函数。