主要课程 - >>>
public class scoreMain {
public static void main(String[] args) {
// Football Score board
Score scoreObject = new Score();
Score scoreObject1 = new Score(1);
Score scoreObject2 = new Score(1,2);
Score scoreObject3 = new Score(1,2,3);
}
}
和构造函数类 - >>>
public class Score {
public void Score()
{
Score(0,0,0);
}
public void Score(int x)
{
Score(x,0,0);
}
public void Score(int x,int y)
{
Score(x,y,0);
}
public String Score(int x,int y,int z)
{
Score(x,y,z);
return String.format("%d/%d%d",x,y,z);
}
}
但在创建对象时显示错误... 构造函数得分(int)未定义 构造函数得分(int int)未定义 构造函数得分(int int int)未定义
答案 0 :(得分:4)
构造函数不返回任何内容。不是String
也不是void
或其他任何内容。您应该按如下方式更改构造函数:
public class Score {
public Score() {
this(0,0,0);
}
public Score(int x) {
this(x,0,0);
}
public Score(int x,int y){
this(x,y,0);
}
public Score(int x,int y,int z) {
Score(x,y,z); // Not sure what's this - you can't do a recursive constructor call. Doesn't make any sense
return String.format("%d/%d%d",x,y,z); // Remove the return statment.
}
}
另请注意,不仅不对任何值进行返回,而且还要对最后重载的构造函数中的构造函数进行递归调用。它没有任何意义,也不起作用。
BTW - 重载构造函数的正确方法是在重载中调用this()
并且只有一个实现。请查看this question了解更多详情。
答案 1 :(得分:1)
在您的代码中,只有方法,没有构造函数。构造函数没有返回类型。
示例:
public class Score {
public Score()
{
this(0,0,0);
}
public Score(int x)
{
this(x,0,0);
}
public Score(int x,int y)
{
this(x,y,0);
}
public Score(int x,int y,int z)
{
//??
//constructors cannot return anything!
//return String.format("%d/%d%d",x,y,z);
}
}
答案 2 :(得分:0)
另外,要调用同一个类的其他构造函数,您应该使用关键字this
,而不是类名。
所以,第一个构造函数看起来像这样
public void Score()
{
this(0,0,0);
}
此外,你在这里有一个方法,而不是一个构造函数。构造者没有返回类型