从类或抽象类继承

Joa*_*nge 20 .net c# inheritance class

如果你有几个类希望它们从基类继承以获得通用功能,那么你应该使用类还是抽象类来实现基类?

Haw*_*ger 40

这取决于,如果您从未希望能够实例化基类,那么将其设为抽象.否则将其保留为普通班级.

  • 确切地说,如果实例化基类没有意义,请将其抽象化。 (2认同)

And*_*are 16

如果基类不应该被实例化,那么使它成为一个抽象类 - 如果基类需要实例化,那么不要使它抽象.

在这个例子中,使基类抽象是有意义的,因为基类没有任何具体含义:

abstract class WritingImplement
{
    public abstract void Write();
}

class Pencil : WritingImplement
{
    public override void Write() { }
}
Run Code Online (Sandbox Code Playgroud)

但是在下一个示例中,您可以看到基类如何具有具体含义:

class Dog
{
    public virtual void Bark() { }
}

class GoldenRetriever : Dog
{
    public override void Bark() { }
}
Run Code Online (Sandbox Code Playgroud)

这一切都非常主观 - 你应该能够根据你的特定领域的需求做出一个非常好的判断.


cas*_*One 6

这取决于,有问题的基类是否有意义存在于它自己而不是从中派生出来?如果答案是肯定的,那么它应该是一个普通的类,否则,它应该是一个抽象类.