
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
通过私有构造器强化不可实例化的能力
只包含静态方法和静态域的类名声不太好,因为有些人会滥用它们来编写过程化的程序.尽管如此,它们确实也有特有的用处,比如:
java.lang.Math, java.util.Arrays把基本类型的值或数组类型上的相关方法组织起来; java.util.Collections把实现特定接口的对象上的静态方法组织起来;还可以利用这种类把final类上的方法组织起来,以取代扩展该类的做法.
这种工具类(utility class)不希望被实例化,然而在缺少显式构造器的情况下,系统会提供默认构造器,可能会造成这些类被无意识地实例化.
通过做成抽象类来强制该类不可被实例化,这是行不通的,因为可能会造成"这个类是用来被继承的"的误解,而继承它的子类又可以被实例化.
所以只要让这个类包含一个私有的构造器,它就不能被实例化了.进一步地,可以在这个私有构造器中抛出异常.
这种做法还会导致这个类不能被子类化,因为子类构造器必须显式或隐式地调用super构造器.在这种情况下,子类就没有可访问的超类构造器可调用了.
了解详情请登陆昆明达内IT培训官网(km.tedu.cn)!