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.密封方法可以防止方法被重写。