黑马程序员技术交流社区

标题: 【已解决】关于用private修饰的构造方法的问题 [打印本页]

作者: 王广丛    时间: 2012-6-5 20:57
标题: 【已解决】关于用private修饰的构造方法的问题
本帖最后由 王广丛 于 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修饰了吧

求大家的观点,分析一下

作者: 李春阳    时间: 2012-6-5 21:09
这个我记得老师之前说了下原因,估计一语带过你没注意。

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

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




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