抽象类与私有构造函数

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类与对象 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )

Part4 类与对象 4.3构造函数