密封与其内部结构
namespace SEALED3
{
//
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(string[] args)
{
Child2 obj = new Child2();
obj.Method1();
obj.Method2();
obj.Method3();
Console.ReadKey();
}
}
}