This question already has answers here:
is it possible to mark overridden method as final

(4个答案)


5年前关闭。




假设我有一个名为Animal的基础抽象类,它具有一个名为Move的虚拟方法。

我创建了一个名为Mammal的子类,该子类继承自Animal并定义了Move方法。

然后,我创建一个名为MammalRabbit子类。

这是东西:

我不希望Rabbit能够覆盖Move已经定义的Mammal的实现(Mammal的子类不能更改Mammal定义的Move的定义)。

由于Rabbit继承自Mammal,是否可以对Move类中的Mammal方法进行“非虚拟化”,以防止继承类覆盖Mammal中的方法定义?

最佳答案

class Animal
{
    public virtual void Move() { }
}
class Mammal : Animal
{
    public sealed override void Move() { }
}
class Rabbit : Mammal
{

    public override void Move() { } // error
}

10-08 18:37