C#中的密封类(sealed)

来源:互联网 发布:淘宝中航数码怎么样 编辑:程序博客网 时间:2024/04/29 12:58
转自:http://blog.sina.com.cn/s/blog_4a15bb6f010007mw.htmlC#提出了一个密封类(sealed class)的概念,帮助开发人员来解决这一问题。 密封类在声明中使用sealed 修饰符,这样就可以防止该类被其它类继承。如果试图将一个密封类作为其它类的基类,C#将提示出错。理所当然,密封类不能同时又是抽象类,因为抽象总是希望被继承的。 sealed(C# 参考) sealed 修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed 修饰符必须始终与 override 一起使用。 在类声明中使用 sealed 修饰符可防止继承此类,例如: sealed class SealedClass { public int x; public int y; } 将密封类用作基类或将 abstract  修饰符与密封类一起使用是错误的。 结构是隐式密封的;因此它们不能被继承。  示例 // cs_sealed_keyword.cs using System; sealed class SealedClass { public int x; public int y; } class MainClass { static void Main() { SealedClass sc = new SealedClass(); sc.x = 110; sc.y = 150; Console.WriteLine("x = {0}, y = {1}", sc.x, sc.y); } } 输出 x = 110, y = 150 在前面的示例中,如果试图通过使用下面的语句从密封类继承: class MyDerivedC: MyClass {} // Error 将收到错误信息: 'MyDerivedC' cannot inherit from sealed class 'MyClass'.