tij3中解释为:(我看不懂,哎)
"这样就能保证,你不会一不小心就把这个方法移到package的其它地方,从而造成你自己都不能删除或修改的尴尬了。方法设成private后,这项权利就被保留下来。"=====
"从而造成你自己都不能删除或修改的尴尬了。"能举个例子吗,针对这种情况。
"这样就能保证,你不会一不小心就把这个方法移到package的其它地方,从而造成你自己都不能删除或修改的尴尬了。方法设成private后,这项权利就被保留下来。"=====
"从而造成你自己都不能删除或修改的尴尬了。"能举个例子吗,针对这种情况。
b.实际上书中所说不能用构造函数创建此对象,但用户还是可以用你定义的静态方法来完成这个功能;本人理解的是这是一种"约定",即如果类的创建者不公开构造函数的话,客户程序员就不要创建这个类的对象了,即也不要调用其静态方法来创建对象。
c.此种做法的特殊用途:比如统计该类的对象的个数,例如需要限制线程数目时 可以这样做。
1. prevent a class from being explicitly instantiated by users of the class
2. precent from being inherited.The class with private constructors has similar effect with a final class. And two things always combined together. You can refer to the source code of java.lang.System or Math class.And singleton pattern implementation in java will ofter use private constructors, though other constructors are used rarely to allow inheritance.
2.对于继承,该类真不能继承吗?嗯,好像静态方法是非面向对象的,试试3.对于这两句话仍不理解
"prevent a class from being explicitly instantiated by users of the class"
"这样可以只有它自己可以实例化类,"
。我还是有我原来的想法,是不是有点钻牛角尖了???"但用户还是可以用你定义的静态方法来完成这个功能",
2.构造函数设为private的用意是控制这个类的实例化过程,即该类不允许继承,只能通过静态方法得到该类的实例,通过定制构造函数达到控制实例化的目的。
static MessageDigest getInstance(String algorithm);
这是单例模式的标准实现参见《设计模式》目的为限制客户程序员new Object
将new 封装, 目的是封装new的过程, 意义不言自明
呵呵
A.为扩展
封装的目的是为了,应对变化,将new 封装, 目的是封装new的过程, 意义不言自明
new的过程 ,可能会变化,所以用了工厂模式 ,此处封装的目的主要是为了扩展,以后可根据需要在此处加代码呵B.如果父类只有private的构造函数,则绝对不允许继承此类!
假设要继承则需自动合成父类的构造函数或显示调用父类的构造函数,但父类的构造函数对子类不可见,不能完成自动合成,所以不允许继承。
父类用来创建对象的静态成员函数,调用父类的虚拟clone方法呢?效果自己考虑。
惭愧 ,还不知道clone方法,先记下来,谢谢zengpan_panpan的解答呵!