虽然C#中可以用 sealed override 来保证 virtual 方法 不被子类 override .
但是子类可以用 new 重新声明和父类同名的方法。 这点不像 Java 中用了 final 后,子类就不能覆盖这个方法了! 哪位大侠知道 C# 中怎么实现?
======================== C#
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
{
new public void F()   //在 java 中子类已经不能定义这么同名方法了
{
System.Console.WriteLine("OK?");
}
override public void G() 
{
Console.WriteLine("C.G");
}  public static void Main(String[] args)
{
C obj = new C(); }
}
========================= JAVA
class A {
protected final void show() {
System.out.println("OK");
}
}class Test extends A {
public void show() {  //error 不能覆盖 A.show() 方法
System.out.println("Test");
}

public static void main(String[] args) {
Test obj = new Test();
obj.show();
}
}