看起来似乎C#对密封方法的使用要求比较高,不是随便就能用的。以下是书上的例子: 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(B.G); } }
@搂主:不加任何修饰符就是不可重写,是默认情况。
这也是我不希望的。:)
不是类的每个成员方法都可以作为密封方法,密封方法必须对基类的虚方法进行重载,提供具体的实现方法。所以,在方法的声明中,sealed修饰符总是与override修饰符同时使用。
-----------------------------------
以上摘自《C#完全手册》(我刚看过的)
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(B.G);
}
}