使子类无法重写方法实现

本文关键字:方法 实现 重写 子类 | 更新日期: 2024-10-31 02:37:43

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

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

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

事情是这样的:

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

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

使子类无法重写方法实现

sealed

当应用于类时,密封修饰符会阻止其他类从该类继承。在下面的示例中,类 B 继承自类 A,但任何类都不能从类 B 继承。

还可以对重写基类中的虚拟方法或属性的方法或属性使用密封修饰符。这使您能够允许类从您的类派生,并防止它们重写特定的虚拟方法或属性。

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