Vic*_*jee 18 c# overriding sealed
是否总是需要在以下代码的方法的签名中跟随sealed关键字override:
public sealed override string Method1(){.....}
Run Code Online (Sandbox Code Playgroud)
我的意思是,如果我想在没有覆盖的情况下"密封"基类中的方法,override关键字仍然是必要的吗?
Dan*_*rth 38
只有覆盖方法才有意义.
这里发生的是:
您从基类(override)重写方法并告诉编译器不再允许从您的类派生的类重写此方法(sealed).
如果该方法是您在类中声明的新方法,并且您希望阻止派生类覆盖它,则只需将其声明为虚拟方法即可.
如果该方法在基类中声明但是不可覆盖,那么它就没有任何意义,因为它已经无法覆盖.
我认为 Hilgarth 先生在这里提供了最好的答案,但只是为了为具有Java
背景的程序员(比如我自己)添加一些新内容,我认为大多数刚接触 C# 的程序员往往会在重写方面与
sealedinfinal混淆。Java
在Java中,不指定修饰符的默认行为是可以在其派生类中重写"any"该方法。
在C#中,默认行为是该方法不能被重写,除非使用virtual关键字显式指定。
希望这有助于补充上面的最佳答案。