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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王广丛 于 2012-6-9 18:43 编辑

在张孝祥老师的 13_黑马程序员_张孝祥_Java基础加强_用普通类模拟枚举的实现原理 视频中,有下面这样一段代码:

public abstract class WeekDay {
        private WeekDay(){};
        
        public final static WeekDay SUN = new WeekDay(){
                @Override
                public WeekDay nextDay() {
                        // TODO Auto-generated method stub
                        return null;
                }
               
        };
        
        public final static WeekDay MON = new WeekDay(){
                @Override
                public WeekDay nextDay() {
                        // TODO Auto-generated method stub
                        return null;
                }
               
        };
        
        public abstract WeekDay nextDay();
        
}
我自己感觉,private WeekDay(){};这行代码是不是多余了,因为这个类本来就是一个抽象类了,没必要再把它的构造方法用private修饰了吧

求大家的观点,分析一下

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

1 个回复

正序浏览
这个我记得老师之前说了下原因,估计一语带过你没注意。

这样的设置是一种小技巧。用private修饰构造函数有它的优点:
1、这个类中仅仅包含供其它类调用的静态方法,没有实例方法。
这意味着当某个类想要调用该类中的方法时,无需创建该类的实例,即不会触及到该类的构造方法。
2、禁止这个类被继承。
3、这个类需要把自身实现的细节封装起来,不允许其它程序通过new语句来创建这个类的实例。
这个类向其他程序提供了获取自身实例的静态方法,这种方法称为静态工厂方法。

因而老师的意思应该是:不想该类被继承并且不想该类被创建实例对象~

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马