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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张峰 黑马帝   /  2011-10-29 11:31  /  1880 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张峰 于 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),或者就直接加上(),就运动第二个构造方法,谁能具体的解释下?


5 个回复

倒序浏览
宁超 黑马帝 2011-10-29 13:37:11
沙发
private Weekday(int day)
构造方法接收参数了。所以就调用的是它了。
回复 使用道具 举报
张峰 黑马帝 2011-10-29 15:28:41
藤椅
宁超 发表于 2011-10-29 13:37
private Weekday(int day)
构造方法接收参数了。所以就调用的是它了。

so噶,谢谢宁超兄弟
回复 使用道具 举报
一个类的构造方法可能有几个,我们在对对象进行初始化的时候,根据构造函数的不同参数就行初始化。。。
回复 使用道具 举报
一个有参  一个无参    想用哪个就用哪个.
回复 使用道具 举报
我感觉楼主的说法错了吧。我调试了一下,当在Sun之后加()时执行的是第一个构造方法而不是第二个构造方法,而在Sun之后加(1)时才执行第二个构造方法吧。
总结:1.当Sun(无参)或者Sun时,执行第一个构造方法,java虚拟机在Sun无参时将其视为参数为空,所以无括号或者带着括号但没参数时都执行第一个构造方法。
         2.当Sun(参数)时,执行第二个构造方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马