Tôi có một số lớp học đặt ra như thế nàyTôi có thể ngăn chặn một phương thức ảo kế thừa bị ghi đè trong các lớp con không?
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ó thể để ngăn chặn sự lớp C từ trọng phương pháp Render, mà không vi phạm các mã sau đây?
A obj = new C();
obj.Render(); // calls B.Render -> c.SpecialRender
Bất kỳ lời giải thích tại sao điều này tốt hơn? Sealed có một ý nghĩa khá sạch sẽ. Nó nói "Sau khi suy nghĩ một số tôi đã đi đến kết luận rằng điều này không bao giờ nên được ghi đè". – Ivan