抽象类与私有构造函数
Posted
技术标签:
【中文标题】抽象类与私有构造函数【英文标题】:abstract class vs private constructor 【发布时间】:2014-01-02 19:15:26 【问题描述】:我有一个 java 类,它只有 静态方法和字段,所以我不希望为此创建任何对象。 我可以通过两种方式实现这一点,
-
使课程抽象化。
使用私有构造函数。
这两种方法哪个更好?
【问题讨论】:
你可以看看java.lang.Math
类(它只有静态字段和方法)。他们将构造函数设为私有。 grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/…。确保您的课程也是最终课程。
+1 评论,我们的一般查询可以在 java 库本身中找到。
【参考方案1】:
您应该使用private
构造函数。
如果您的类是抽象的,则可以对其进行扩展并创建对象。根据我对问题的理解,您想要的是不可实例化的类。
来自Item 4 of Effective java:
试图通过抽象类来强制执行不可实例化是行不通的。该类可以被子类化并且子类可以被实例化。此外,它会误导用户认为该类是为继承而设计的
【讨论】:
该链接无法访问,可能仅适用于 Safari Books Online 的订阅者。这是一个关于这个主题的博客:medium.com/@biratkirat/…以上是关于抽象类与私有构造函数的主要内容,如果未能解决你的问题,请参考以下文章
Python类与对象最全总结大全(类实例属性方法继承派生多态内建函数)
PHP 设计模式:私有构造函数是不是不利于您让其他人扩展的类?
Kotlin类与对象 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )