如果一个类没有抽象成员,它是否可以被标记为抽象?即使没有直接实例化的实际理由呢? (除了单元测试)
答案 0 :(得分:8)
是的,即使在没有抽象方法的情况下,明确标记为不应实例化的基类也是合理和有益的。
答案 1 :(得分:4)
你想让那个班级有一个实际的实例吗?如果是,那么不要将其标记为摘要。如果不是,则将其标记为摘要。
答案 2 :(得分:4)
简答:是的。
答案很长:abstract
关键字将某个类和/或其成员标记为不直接有用。为什么这可能因情况而异;抽象类可能过于基本,无法进行任何实际工作,或者它可能具有为此类中的其他代码存在而需要存在的抽象成员,但不能在此级别具体定义。缺点是,通过标记类抽象,您告诉编译器和其他开发人员不要直接实例化此类,而是继承它以创建具体有用的实现。即使该类对其所有成员都有一个有效的实现,如果您认为必须继承该类以充分利用该实现,您也可以这样做。
答案 3 :(得分:1)
如果目标是创建一个其他类将扩展的基类,那么将它作为一个抽象类是有意义的。
但是,如果目标是创建某种形式的Utility类 - 只有static
成员的类 - 最好的方法是给类一个标记为{{1}的构造函数}。这样,该类无法实例化,也无法进行子类化。这发出了一个明确的信号,即该类的唯一用途是使用其private
方法。 (这是来自 Effective Java 的提示,由Josh Bloch撰写)
答案 4 :(得分:0)
是的,我想是的。至少那是我不时做的事情; - )