我有一些这样的类(class)

class A
{
    public virtual void Render()
    {
    }
}
class B : A
{
    public override void Render()
    {
        // Prepare the object for rendering
        SpecialRender();
        // Do some cleanup
    }

    protected virtual void SpecialRender()
    {
    }
}
class C : B
{
    protected override void SpecialRender()
    {
        // Do some cool stuff
    }
}

是否可以在不破坏以下代码的情况下防止C类覆盖Render方法?
A obj = new C();
obj.Render();       // calls B.Render -> c.SpecialRender

最佳答案

您可以密封单个方法以防止它们被覆盖:

public sealed override void Render()
{
    // Prepare the object for rendering
    SpecialRender();
    // Do some cleanup
}

10-08 18:11