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

时间:2013-01-06 14:33:41

标签: java oop coding-style semantics

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

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

    由于

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

1 个答案:

答案 0 :(得分:5)

由于您希望将该类用作子类,因此建议“带有私有构造函数的最终类”将无法正常工作,因此您必须采用“抽象”方式。从“抽象类”的定义来看,这是一个传奇,因为定义准确地说明了你想要的东西:

  

抽象类是一个被声明为abstract的类 - 它可能也可能是   不包括抽象方法。抽象类无法实例化,   但它们可以被分类。

     

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