Chr*_*ris 13 java constructor private class abstract
在Java中,在抽象类中使用私有构造函数的目的是什么?
在一篇评论中我得到了这个问题,我很好奇,我们需要以什么样的方式使用构造函数呢?
我认为它可以与抽象类中的另一个构造函数一起使用,但这非常简单.它也可以用于构造静态内部类,这将超越抽象类.
也许有更优雅的用法?
Mar*_*nik 31
如果private构造函数是该类的唯一构造函数,那么原因很明显:防止子类化.某些类仅用作静态字段/方法的持有者,并且不希望实例化或子类化.请注意,abstract修饰符在这种情况下是冗余的 - 有或没有它将不会有实例化.正如@JB Nizet在下面所说,abstract修饰符也是不好的做法,因为它向类的客户发送了错误的信号.实际上这堂课应该是final.
还有另一个用例,非常罕见:您可以abstract class只private使用包含其自己的子类作为嵌套类的构造函数.这个习惯用法确保这些嵌套类是唯一的子类.实际上,enumJava中的s只使用这个成语.
如果周围有其他构造函数,那么构造函数真的没有什么特别之处private.它可以abstract像在任何其他类中一样在类中使用.