5

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

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

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

谢谢

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

4

1 回答 1

5

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

抽象类是被声明为抽象的类——它可能包含也可能不包含抽象方法。抽象类不能被实例化,但它们可以被子类化。

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

于 2013-01-06T14:49:20.337 回答