密封類與密封成員:
using System;
class Parent
{
public virtual void Method1() { Console.WriteLine("Method1"); }
public virtual void Method2() { Console.WriteLine("Method2"); }
public virtual void Method3() { Console.WriteLine("Method3"); }
}
class Child1 : Parent
{
/* 下面兩個方法可以繼續覆蓋 */
public override void Method1() { Console.WriteLine("New Method1"); }
public override void Method2() { Console.WriteLine("New Method2"); }
/* 此方法已用 sealed 禁止了繼續覆蓋, 也就是取消了虛函數的特性 */
public sealed override void Method3() { Console.WriteLine("New Method3"); }
}
/* 此類用 sealed 定為密封類, 不能再有派生類; 不管其內部的性質如何 */
sealed class Child2 : Child1
{
public override void Method1() { Console.WriteLine("New New Method1"); }
public sealed override void Method2() { Console.WriteLine("New New Method2"); }
}
class Program
{
static void Main()
{
Child2 obj = new Child2();
obj.Method1(); // New New Method1
obj.Method2(); // New New Method2
obj.Method3(); // New Method3
Console.ReadKey();
}
}