有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中防止实例化的oop正确方法

如果我们想防止在Java中实例化对象,我们可以使用几种方法,其中最明显的是:

  1. 抽象关键词
  2. 私有/受保护构造函数

假设类不包含抽象方法,我们使用abstract关键字来阻止对象的创建。这种方法不正确吗(我指的不是语法正确性,而是语义正确性)?或者在这种情况下使用私有构造函数更好

谢谢

UPD 类将是其他类的基类,尽管它不包含抽象方法。在我的例子中,它是一个“AbstractTestBase”,其中包含一些通用数据和实用方法,可以被一些集成/单元测试组使用


共 (1) 个答案

  1. # 1 楼答案

    由于您希望将该类用作子类,建议“带有私有构造函数的最终类”显然不起作用,因此您必须采用“抽象”的方式。从“抽象类”的定义来看,这是legetimate,因为该定义准确地说明了您想要什么:

    An abstract class is a class that is declared abstract—it may or may not include abstract methods. Abstract classes cannot be instantiated, but they can be subclassed.

    http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html