无法使用构造函数 - 构造函数出错

时间:2016-06-10 17:12:53

标签: java

我目前正在使用java进行自学,观看新闻波士顿的视频。我编写了一个像他的代码一样的构造函数,但我收到了一个错误。

The code from the tutorial compared to my code

这是我在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)” 如果你有答案,也请解释一下。谢谢!

1 个答案:

答案 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);
}