我目前正在使用java进行自学,观看新闻波士顿的视频。我编写了一个像他的代码一样的构造函数,但我收到了一个错误。
这是我在another.java中的完整代码
注意:上面的屏幕截图和下面的代码没有相同的类别名称,我只是改变了它,因为它让我感到困惑。希望你了解
public class class2{
private int hour;
private int minutes;
private int second;
public class2(){
this(0,0,0); /** It says "recursive constructor incovation class2(int,int,int)" */
}
public class2(int h){
this(h,0,0); /** It says "recursive constructor incovation class2(int,int,int)" */
}
public class2(int h, int m){
this(h,m,0); /** It says "recursive constructor incovation class2(int,int,int)" */
}
public class2(int h, int m, int s){
this(h,m,s); /** It says "recursive constructor incovation class2(int,int,int)" */
}
public void setTime(int h, int m, int s){
setHour(h);
setMinute(m);
setSecond(s);
}
public void setHour(int h){
hour = ((h >=0 && h <24) ? h : 0);
}
public void setMinute(int m){
minutes = ((m >=0 && m <60) ? m : 0);
}
public void setSecond(int s){
second = ((s >=0 && s <60) ? s : 0);
}
public int getHour (){
return hour;
}
public int getMinute (){
return minutes;
}
public int getSecond(){
return second;
}
public String printTime(){
return String.format("%02d:%02d:%02d:", getHour(),getMinute(),getSecond());
}
}
它说的错误是“递归构造函数incovation class2(int,int,int)” 如果你有答案,也请解释一下。谢谢!
答案 0 :(得分:4)
因为这是递归的:
public class2(int h, int m, int s){
this(h,m,s); /** It says "recursive constructor incovation class2(int,int,int)" */
}
调用此构造函数...调用此构造函数。无限。
如果这是&#34;主要&#34;构造函数(所有其他人调用的那个),然后这是您想要执行实际构造函数逻辑的地方。类似的东西:
public class2(int h, int m, int s){
setTime(h, m, s);
}