假设这个抽象类:
abstract public class MyBase {
abstract public int GetValue();
<some concrete methods here>
}
现在我想继承它作为另一个抽象类,实现 GetValue()
但添加新的抽象方法:
abstract public class MyBase2 : MyBase {
abstract public int GetValue2();
public override int GetValue() {
// some code here
return something;
}
}
为什么我必须为 MyBase2.GetValue()
指定 override
? MyBase.GetValue()
是否已经被标记为 abstract
,因此自然会被继承自 MyBase
的任何内容覆盖?
最佳答案
Why do I have to specify override for MyBase2.GetValue()?
C++ 也采用了这种范式。
想法是:通过明确地需要为 virtual
和 abstract
使用关键字 override
,您将确保您进行覆盖时不要打错字。因为如果您看不到这样的错字,行为,尤其是在 virtual
上的行为将会发生显着变化。
话虽如此;我仍然觉得奇怪的是,用于添加方法的 new
关键字仍然是可选的,并且仅在省略时发出警告。
关于c# - 抽象类必须覆盖抽象方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57127217/