我們已經知道,使用密封方法可以防止對類的繼承。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。