禁止重写派生类中的方法

本文关键字:方法 重写 派生 禁止 | 更新日期: 2023-09-27 18:19:33

这是我的类,我不希望这个方法在子类中被重写,我该如何实现这种行为?

class A 
{ 
   public virtual void demo() 
   { 
   } 
} 
class B : A 
{ 
   public override void demo() 
   { 
   } 
} 
// when Class B be inherited in C, methods can be overridden further, 
// but I don't want the method to be overridden further.
class C : B 
{ 
}

禁止重写派生类中的方法

您只需要sealed修饰符:

public sealed override void demo() 
{ 
    // Whatever implementation
} 

(当然,我认为它通常是一个符合.NET约定的名称。)

如果你想在不改变行为的情况下防止方法被重写,你需要重写它,但要显式调用以前的行为:

public sealed override void demo() 
{ 
    base.demo();
} 

请注意,当应用于方法(或属性)时,sealed只能override一起应用

override void demo() 之前放入"sealed"修饰符

class A 
{ 
    public virtual void demo() 
    { 
    } 
} 
class B:A 
{ 
    public sealed override void demo() 
    { 
    } 
} 
//B can be inherited in C but demo() method can not be overriden further 
class C:B 
{ 
}