在我们的日常写代码中,类通常是允许被继承的,这样就会导致一个问题,所有的类都可以被其它类继承,导致来回继承,使代码的层次结构非常混乱,所以C#提供给我们了:密封。
密封类
密封类就是为了限制类的可继承,如果某个类是密封类,则这个类是不能被继承的,所以这个类也没有子类。
访问修饰符 sealed class 类名
{
//具体的成员
}
通过 sealed 关键字对类进行密封。同时方法密封类中的成员或者方法,只能通过创建密封类的对象来进行方法。
密封方法
是不是在方法前面加一个 sealed 关键字 就可以声明为密封方法了呢?
答案:错!
我们只能对重写后的方法,进行密封,表示不能被再次重写了。
class AttackBase
{
public virtual void Name()
{
Console.WriteLine("这是基类的法");
}
}
class Attack1 : AttackBase
{
public override sealed void Name()
{
Console.WriteLine("这是派生类中的密封方法");
}
}
所以说:对于密封方法,sealed和override总是同时出现的。