有时候我们可能需要编写只包含静态方法和静态域的类,例如某些工具类。
如java.lang.Math 或者 java.util.Arrays
这样的工具类不希望被实例化,因为实例对于它们没有任何意义。
如果不手写提供一个构造器,编译器会为这个类提供一个public的构造器,所以我们可以通过手写提供一个私有化的
构造器,从而来阻止这样的工具类来产生实例。
在这个私有的构造器里面,我们可以抛出一个AssertionException异常,从而进一步阻止它在这个类内被调用。
因为提供了私有化的构造器,而且没有提供其他的构造器,这样的类就不能被子类化了,因为子类总会显示或者隐式的调用父类构造器一次。
因为子类没有可以访问的父类构造器了。