黑马程序员技术交流社区
标题:
【已解决】关于用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