《Effective Java》通过私有构造器强化不可实例化的能力

一些类是不希望其他类对它实例化的,比如java.util.Arrays、java.lnag.Math、java.util.Collections。我们发现这些类都会声明一个私有的构造方法,这样外界就无法通过默认无参的构造方法来创建这些类的对象,同时这些类也不能被继承。

《Effective Java》通过私有构造器强化不可实例化的能力
《Effective Java》通过私有构造器强化不可实例化的能力
《Effective Java》通过私有构造器强化不可实例化的能力

我们知道抽象类也是不可以被实例化的,那么为什么不使用抽象类呢?
抽象类是可以有子类的,而且抽象类的出现可能会让人误解它的用途,被人理解为是故意用来被继承的。

总结:通过private修饰无参的构造器,可以防止其他地方实例化该类的对象,但是同样这个类不会再有子类了,因为子类对象的创建,首先就要先访问父类的构造方法。