禁止覆盖派生类中的方法

时间:2013-06-24 06:02:36

标签: c# .net inheritance override

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

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 
{ 

}

2 个答案:

答案 0 :(得分:11)

您只需要sealed修饰符:

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

(我认为它通常是符合.NET惯例的名称。)

如果要在不自行更改行为的情况下阻止覆盖该方法,则需要覆盖它,但显式调用以前的行为:

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

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

答案 1 :(得分:9)

sealed

之前添加“override void demo()”修饰符
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 
{ 

}