如果私有构造
函数是该类的唯一构造
函数,则原因很明确:防止子类化.一些类仅用作静态字段/
方法的持有者,并且不希望被实例化或子类化.请注意,抽象修饰符在这种情况下是冗余的,有或没有它,将不会有实例化.正如@JB Nizet在下面注释的,抽象修饰符也是不好的做法,因为它向类的客户端发送
错误的信号.实际上这个课程是最终的.
还有另一个用例,但很少见,但您可以拥有一个只包含自己的子类作为嵌套类的私有构造函数的抽象类.这个成语确保这些嵌套类是唯一的子类.事实上,Java中的枚举只是使用这个成语.
如果周围还有其他构造函数,那么私有构造函数真的没什么特别的.它像在任何其他的一样在一个抽象类中使用.