出于好奇,我尝试覆盖基类中的抽象方法,并实现抽象方法.如下:
public abstract class FirstAbstract
{
public abstract void SomeMethod();
}
public abstract class SecondAbstract : FirstAbstract
{
public abstract override void SomeMethod();
//?? what sense does this make? no implementaion would anyway force the derived classes to implement abstract method?
}
Run Code Online (Sandbox Code Playgroud)
很想知道为什么C#编译器允许编写'抽象覆盖'.这不是多余的吗?应该是一个编译时错误来做这样的事情.是否适用于某些用例?
谢谢你的关注.
我有一个带有一些抽象方法的类,但我希望能够在设计器中编辑该类的子类.但是,设计者无法编辑子类,除非它可以创建父类的实例.所以我的计划是用存根替换抽象方法并将它们标记为虚拟 - 但是如果我创建另一个子类,如果我忘记实现它们,我将不会得到编译时错误.
有没有办法标记方法,以便它们必须由子类实现,而不将它们标记为抽象?