黑马程序员技术交流社区

标题: 关于枚举的问题??? [打印本页]

作者: ccyznhy    时间: 2013-8-25 22:58
标题: 关于枚举的问题???
public enum WeekDay {
        SUN(0),MON(1),TUE(2),WEN(3),THU(4),FRI(5),SAT(6);
        private WeekDay(){
                System.out.println("1");
        }
        private WeekDay(int day){
                System.out.println("2");
        }
}
为什么会打印多个2???


作者: 小冰块    时间: 2013-8-25 23:05
你打印的主函数呢?木有主函数我怎么知道为什么会多一个2?
作者: 穿靴子的猫    时间: 2013-8-25 23:10
因为你的构造方法有参数 如果你 SUN,改成这样 肯定会走一 SUN就代表一个无参的对象 你后面给了一个(0)就代表有一个整型的参数,肯定要进有参的那个方法
作者: の放下执著    时间: 2013-8-28 22:43
public enum WeekDay {
        SUN(0),MON(1),TUE(2),WEN(3),THU(4),FRI(5),SAT(6);
        private WeekDay(){
                System.out.println("1");
        }
        private WeekDay(int day){
                System.out.println("2");
        }
}
在枚举中,取值只能是被规定了的,当没有指定参数时,默认调用的是无参的构造函数,例如:SUN;则调用第一个构造函数,打印1。当元素指定实参时,调用相应的构造函数,所以:多次打印2.
作者: yangqing    时间: 2013-8-28 23:22
因为你指定了对象后面参数所以调用的是有参的构造函数。
这个可以扩展一下重载和这个的联系。。  一个类中有几个方法方法名相同。这样就必须指定参数类型或者参数个数等来确定到底要指定哪个方法运行。  不指定就是默认的无参的构造方法。。
作者: 杨增坤    时间: 2013-8-29 20:39
楼主,如果问题解决了,请把问题的"未解决"更改为"已解决"!
谢谢合作!

更改方法:http://bbs.itheima.com/thread-71308-1-1.html




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2