C# sealed关键字的使用

一.前言

  sealed的中文意思就是密封。在C#中,sealed修饰符用在两个方面,一是修饰类,二是修饰方法。

二.用法

1.修饰类

  sealed应用于某个类后,可以阻止该类被其它类继承。如下面的示例,类B可以继承类A,但没有类可以继承类B。

class A {}
sealed class B : A {}

2.修饰方法

  sealed应用于方法后,不影响当前类的继承关系。它能够防止当前这个已经重写的方法被其子类去重写替换,也就是说sealed必须是与override搭配使用,对应虚方法或抽象方法。在编译器对方法进行sealed修饰,也会看到必须搭配override的提示。

  下面是正确例子。

public class A
{
    public virtual void Func()
    {
        Console.WriteLine("A");
    }
}

public class B : A
{
    public sealed override void Func()
    {
        Console.WriteLine("B");
    }
}

  上面在类B中,用sealed修饰符给方法Func设置为密封方法,之后类B的派生类就不可能对该方法进行重写。

public class C : B
{
    public override void Func()//编译器提示是密封的,无法重写。
    {
        Console.WriteLine("C");
    }
}

  实际场景:一般第三方类库中,很多类和方法都设置了密封,防止客户端对它进行继承或重写方法,造成结构混乱。使用sealed修饰符也可以提高运行效率,因为可以减少考虑继承类会重写的情况。

三.总结

  1.sealed是用来密封的。

  2.密封类可以防止类被继承。

  3.密封方法可以防止方法被重写。

原文地址:https://www.cnblogs.com/shadoll/p/14475288.html