给出三个父/子类,如下所示:
class A {
public virtual void doSomething() {
//do things
}
}
class B : A {
public override /*virtual?*/ void doSomething() {
//do things
base.doSomething();
}
}
class C : B {
public override void doSomething() {
//do things
base.doSomething();
}
}
类B
的{{1}}方法在其签名中是否同时包含doSomething()
和override
,因为它也被virtual
类覆盖,或者只有班级C
在其A
方法签名中有virtual
吗?
答案 0 :(得分:7)
如果某个方法已在其中一个超类中标记为虚拟,则您不需要(读取:您不能)将该方法标记为虚拟。
该方法将在整个继承树中保持虚拟,直到子类将其标记为sealed
。然后,任何子类都不能覆盖密封方法。
答案 1 :(得分:5)