如果你有几个类希望它们从基类继承以获得通用功能,那么你应该使用类还是抽象类来实现基类?
这取决于,如果您从未希望能够实例化基类,那么将其设为抽象.否则将其保留为普通班级.
如果基类不应该被实例化,那么使它成为一个抽象类 - 如果基类需要实例化,那么不要使它抽象.
在这个例子中,使基类抽象是有意义的,因为基类没有任何具体含义:
abstract class WritingImplement { public abstract void Write(); } class Pencil : WritingImplement { public override void Write() { } }
但是在下一个示例中,您可以看到基类如何具有具体含义:
class Dog { public virtual void Bark() { } } class GoldenRetriever : Dog { public override void Bark() { } }
这一切都非常主观 - 你应该能够根据你的特定领域的需求做出一个非常好的判断.
这取决于,有问题的基类是否有意义存在于它自己而不是从中派生出来?如果答案是肯定的,那么它应该是一个普通的类,否则,它应该是一个抽象类.