我們已經知道,使用密封方法可以防止對類的繼承。C#還提出了密封方法(sealed method)的概念,以防止在方法所在類的派生類中對該方法的重載。
對方法可以使用sealed修飾符,這時我們稱該方法是一個密封方法。
不是類的每個成員都可以作為密封方法,密封方法必須對基類的虛方法進行重載,提供具體的實現方法。所以,在方法的聲明中,sealed修飾符總是和override修飾符同時使用。請看例子代碼:
程序清單14-7:
using System; class A { public virtual void F(){ Console.WriteLine("A.F"); } public virtual void G(){ Console.WriteLine("A.G"); } } class B:A { sealed override public void F(){ Console.WriteLine("B.F"); } override public void G(){ Console.WriteLine("B.G"); } } class C:B { override public void G(){ Console.WriteLine("C.G"); } }
類B對基類A中的兩個虛方法均進行了重載,其中F方法使用了sealed修飾符,成為一個密封方法。G方法不是密封方法,所以在B的派生類C中,可以重載方法G,但不能重載方法F。