如果我们想要阻止Java中对象的实例化,我们可以使用几种方法,最明显的方法是:
假设类不包含抽象方法,我们使用 abstract 关键字来阻止创建对象。这种方法是不正确的(我的意思是不是语法正确,而是语义)?或者在这种情况下使用私有构造函数更好?
由于
UPD 类将是其他类的基类,但它不包含抽象方法。在我的例子中,它包含一些“AbstractTestBase”,其中包含一些常用数据和实用方法,可供某些集成/单元测试使用。
答案 0 :(得分:5)
由于您希望将该类用作子类,因此建议“带有私有构造函数的最终类”将无法正常工作,因此您必须采用“抽象”方式。从“抽象类”的定义来看,这是一个传奇,因为定义准确地说明了你想要的东西:
抽象类是一个被声明为abstract的类 - 它可能也可能是 不包括抽象方法。抽象类无法实例化, 但它们可以被分类。
http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html