使子类无法覆盖方法实现

J. *_*Doe 6 .net c# inheritance

假设我有一个名为base的抽象类Animal,它有一个名为的虚方法Move.

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

然后我创建一个Mammal名为的子类Rabbit.

这是事情:

我不希望Rabbit到能够覆盖的实施Move,其Mammal已经定义(子类的Mammal不能改变移动的定义,Mammal定义).

既然Rabbit继承自己Mammal,是否可以"取消虚拟化" 类中的Move方法,Mammal以防止继承类覆盖方法定义Mammal

Xia*_*312 7

sealed

应用于类时,sealed修饰符会阻止其他类继承它.在以下示例中,类B继承自类A,但没有类可以从类B继承.

您还可以在覆盖基类中的虚方法或属性的方法或属性上使用sealed修饰符.这使您可以允许类派生自类,并防止它们覆盖特定的虚拟方法或属性.

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

    public override void Move() { } // error
}
Run Code Online (Sandbox Code Playgroud)