我有一些課程奠定了這樣我可以防止繼承的虛擬方法在子類中被覆蓋嗎?
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
任何解釋這是爲什麼好?密封具有相當乾淨的含義。它說:「經過一番思考,我得出了這個決不應該被忽略的結論」。 – Ivan 2011-12-16 19:51:48