A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ccyznhy 中级黑马   /  2013-8-25 22:58  /  1067 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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???

5 个回复

倒序浏览
你打印的主函数呢?木有主函数我怎么知道为什么会多一个2?
回复 使用道具 举报
因为你的构造方法有参数 如果你 SUN,改成这样 肯定会走一 SUN就代表一个无参的对象 你后面给了一个(0)就代表有一个整型的参数,肯定要进有参的那个方法
回复 使用道具 举报
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.

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
因为你指定了对象后面参数所以调用的是有参的构造函数。
这个可以扩展一下重载和这个的联系。。  一个类中有几个方法方法名相同。这样就必须指定参数类型或者参数个数等来确定到底要指定哪个方法运行。  不指定就是默认的无参的构造方法。。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
楼主,如果问题解决了,请把问题的"未解决"更改为"已解决"!
谢谢合作!

更改方法:http://bbs.itheima.com/thread-71308-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马