【问题标题】:Forbid overriding of a method in a derived class禁止重写派生类中的方法
【发布时间】:2013-06-20 13:41:56
【问题描述】:
这是我的班级,我不希望在子班级中重写此方法,我该如何完成此行为?
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
{
}
【问题讨论】:
标签:
c#
.net
inheritance
overriding
【解决方案1】:
您只需要sealed 修饰符:
public sealed override void demo()
{
// Whatever implementation
}
(当然,我假设它通常是一个符合 .NET 约定的名称。)
如果你想防止方法被重写而不自己改变行为,你需要重写它但显式调用之前的行为:
public sealed override void demo()
{
base.demo();
}
请注意,当应用于方法(或属性)时,sealed 只能与override 一起应用。
【解决方案2】:
将'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
{
}