黑马程序员技术交流社区

标题: 枚举类的一个问题 [打印本页]

作者: 张峰    时间: 2011-10-29 11:31
标题: 枚举类的一个问题
本帖最后由 张峰 于 2011-11-30 13:15 编辑

public enum Weekday{
        SUN,MON,TUE,WED,THI,FRI,SAT;
        private Weekday(){System.out.println("first");}
        private Weekday(int day){System.out.println("second");}
如上代码 ,执行的是第一个构造方法,在 sun之后加上(1),或者就直接加上(),就运动第二个构造方法,谁能具体的解释下?



作者: 宁超    时间: 2011-10-29 13:37
private Weekday(int day)
构造方法接收参数了。所以就调用的是它了。
作者: 张峰    时间: 2011-10-29 15:28
宁超 发表于 2011-10-29 13:37
private Weekday(int day)
构造方法接收参数了。所以就调用的是它了。

so噶,谢谢宁超兄弟
作者: 陆华山    时间: 2011-10-29 17:03
一个类的构造方法可能有几个,我们在对对象进行初始化的时候,根据构造函数的不同参数就行初始化。。。
作者: 骚灵小情歌    时间: 2011-10-29 18:29
一个有参  一个无参    想用哪个就用哪个.
作者: 黄晓天    时间: 2011-10-29 18:35
我感觉楼主的说法错了吧。我调试了一下,当在Sun之后加()时执行的是第一个构造方法而不是第二个构造方法,而在Sun之后加(1)时才执行第二个构造方法吧。
总结:1.当Sun(无参)或者Sun时,执行第一个构造方法,java虚拟机在Sun无参时将其视为参数为空,所以无括号或者带着括号但没参数时都执行第一个构造方法。
         2.当Sun(参数)时,执行第二个构造方法




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