9

这是我的班级,我不希望在子班级中覆盖此方法,我该如何完成这种行为?

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 
{ 

}
4

2 回答 2

11

你只需要sealed修饰符:

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

(当然,我假设它通常是符合 .NET 约定的名称。)

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

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

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

于 2013-06-24T06:04:27.990 回答
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 
{ 

}
于 2013-06-24T06:04:38.580 回答