假设我有以下 C# 类:
abstract class a
{
protected abstract void SomeMethod();
}
abstract class b : a
{
protected abstract override void SomeMethod();
}
class c : b
{
protected override void SomeMethod()
{
}
}
重写 b 中的方法实际上有什么意义,因为它可以很容易地写成:
abstract class b : a
{
}
写 b 的“首选”方式是什么?如果重写抽象方法或属性没有意义,为什么允许重写?
最佳答案
您可能想要允许它的一个原因是:它显示了意图。它解释说是的,你知道这个方法在基类中是抽象的。我知道这一点,而且我仍然希望它在这里是抽象的。
那样的话,如果基类删除了该方法,您的抽象类将无法编译,而不仅仅是具体类(它甚至可能不在您的代码中)。
也就是说,这不是一个特别重要的原因......我通常会忽略它。
关于c# - .net 抽象覆盖怪癖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1125452/