目录:
定义-密封等级是什么意思?
在C#中,密封类是不能被任何类继承但可以实例化的类。
密封类的设计意图是指示该类是专门的,并且无需扩展它以通过继承提供任何其他功能来覆盖其行为。 密封类通常用于封装需要在整个程序中使用但无需对其进行任何更改的逻辑。
出于安全方面的考虑,密封类通常是通过防止意外派生而使用的,这种派生类可能会破坏派生类提供的实现,从而导致派生类破坏该类。 由于密封类无法形成基类,因此对密封类的调用会稍快一些,因为它们可以实现某些运行时优化,例如将密封类实例上的虚拟成员函数调用为非虚拟调用。 密封类在将类从密封类型更改为未密封时不会破坏兼容性,从而有助于版本控制。
.NET框架库中的某些关键类被设计为密封类,主要是为了限制这些类的可扩展性。
技术百科解释了密封课程
与隐式密封的结构不同,密封类使用关键字“密封”声明,以防止意外继承该类。 密封类只有在具有公共级别可访问性的方法时才有用。 密封类不能是抽象类,因为抽象类打算由提供抽象方法和属性实现的另一个类派生。
例如,一个密封的类DatabaseHelper可以设计为具有属性和方法,这些属性和方法可以服务与数据库有关的动作的功能,包括打开和关闭数据库的连接,获取和更新数据等。因为它执行的关键功能可以通过在派生类中重写而不被篡改,将其设计为密封类。
密封限制了可扩展性的好处,并阻止了库类型的自定义。 因此,必须仔细权衡密封等级的影响后才对其进行密封。 密封类别要考虑的标准列表包括:- 该类是静态的
- 该类包含代表敏感信息的继承成员
- 查询类以通过反射方法检索其属性
- 该类继承了许多需要密封的虚拟成员