软讯网络 > 编程语言 > .NET > C#.NET > sealed关键字的应用
【标 题】:sealed关键字的应用
【关键字】:
sealed
【来 源】:http://blog.csdn.net/lyz84331/archive/2006/10/22/1344776.aspx
sealed关键字的应用
sealed有点类似JAVA中的final关键字
被sealed修饰的类不能作为父类被继承
namespace sealedTest
{
public sealed class Base
{
}
public class Child:Base //wrong
{}
}
被sealed修饰的方法不能被重写
没有sealed关键字的情况
using System;
namespace sealedTest
{
//父类
public class Base
{
public virtual void display()
{
Console.WriteLine("1111111");
}
}
//子类
public class Child:Base
{
public override void display() //没有sealed关键字的情况
{
Console.WriteLine("2222222");
}
}
//孙类
public class Grandchild:Child
{
public override void display()
{
Console.WriteLine("3333333");
}
}
//测试类
class Test
{
[STAThread]
static void Main(string[] args)
{
Base b=new Base();
b.display();
b=new Child();
b.display();
b=new Grandchild();
b.display();
}
}
}
有sealed关键字的情况
using System;
namespace sealedTest
{
//父类
public class Base
{
public virtual void display()
{
Console.WriteLine("1111111");
}
}
//子类
public class Child:Base
{
public sealed override void display() //有sealed关键字的情况
{
Console.WriteLine("2222222");
}
}
//孙类
public class Grandchild:Child
{
//“sealedTest.Grandchild.display()”:无法重写继承的成员“sealedTest.Child.display()”,因为它已被密封
public override void display()
{
Console.WriteLine("3333333");
}
}
//测试类
class Test
{
[STAThread]
static void Main(string[] args)
{
Base b=new Base();
b.display();
b=new Child();
b.display();
b=new Grandchild();
b.display();
}
}
}