是否总是要遵循sealed
用关键字override
在类似于下面的代码的方法的签名:
public sealed override string Method1(){.....}
我的意思是,如果我要“封”基类中的方法,无需重写,是override
必要的关键字还是?
是否总是要遵循sealed
用关键字override
在类似于下面的代码的方法的签名:
public sealed override string Method1(){.....}
我的意思是,如果我要“封”基类中的方法,无需重写,是override
必要的关键字还是?
如果重写它密封的方法才有意义。
这里发生的是以下几点:
您正在覆盖从基类的方法( override
),并告诉编译器从你的类派生类不再允许重写此方法( sealed
)。
如果该方法是在您的类中声明一个新的,并要防止重写它的派生类,根本就没有声明为虚。
如果该方法是在基类中声明,但不是重写密封那就没有任何意义,因为它已经不能被覆写。
我认为Hilgarth先生提供了最好的答案在这里 ,但只是为了增加对谁在爪哇 (像我)以前的后台程序员一些新的东西,我想大多数新程序员C#,往往会混淆sealed
与final
在Java
关于压倒一切。
在Java中,没有指定默认的行为"any"
修饰的是,该方法在派生类中 。
而在C#,默认行为是,除非使用明确指定该方法被 virtual
关键字。
希望这有助于补充上述的最佳答案。
您只能封住一个覆盖,所以我想答案是肯定的。