假设我有以下c#类:
abstract class a
{
protected abstract void SomeMethod();
}
abstract class b : a
{
protected abstract override void SomeMethod();
}
class c : b
{
protected override void SomeMethod()
{
}
}
Run Code Online (Sandbox Code Playgroud)
实际上是否有任何一点可以覆盖b中的方法,因为它可以很容易地被写为:
abstract class b : a
{
}
Run Code Online (Sandbox Code Playgroud)
写作b的"首选"方式是什么?如果没有重写覆盖抽象方法或属性的原因,为什么允许它?
您可能想要允许它的一个原因:它显示意图.它解释了是的,你知道这个方法在基类中是抽象的.我知道,我仍然希望它在这里是抽象的.
这样,如果基类删除了方法,您的抽象类将无法编译,而不是仅仅具体类(甚至可能不在您的代码中).
那就是说,这不是一个特别重要的原因......我通常会把它排除在外.