The*_*-IT 5 c# virtual inheritance overriding
抱歉,如果这是一个愚蠢的问题或者已经被问过;我已经尝试过谷歌搜索,但我现在确实无法测试这个......所以这里是:
想象一下这个场景:
public class Bottom
{
virtual public void foo()
{
doTheThing();
}
}
public class Middle : Bottom
{
virtual override public void foo() //this function will both override the parent's foo() and letting its child's foo() be over ridden
{
base.foo();
doTheOtherThing();
}
}
public class Top : Middle
{
override public void foo()
{
base.foo();
doTheFinalThing();
}
}
Run Code Online (Sandbox Code Playgroud)
中间那个有评论的就是我要问的。
这是一件可以做的事情吗?是传统的吗?关键词的顺序是否正确?有关系吗?这样做最正确的方法是什么?
底层基类中定义的虚拟方法意味着该方法是虚拟的,调用它将执行最派生的实现。所有覆盖都会继承此行为。
这意味着您只需要指定“override”关键字。基本方法已经确保它是虚拟的,因此您不需要在重写中再次指定它。编译器甚至不允许你这样做。
此外,许多人会认为您应该“优先考虑组合而不是继承”,但这是另一个讨论。像您一样进行多次覆盖是可以的并且是正确的。
| 归档时间: |
|
| 查看次数: |
2756 次 |
| 最近记录: |