在本文中,我将讨论如何创建和使用密封类。我还会告诉你微软的.NET类库中哪些地方使用到了密封类。
密封类被用来限制面向对象编程中的继承特性。一旦一个类被定义为密封类,那么它将不能被继承。
在C#中,我们使用关键字sealed来定义一个密封类,而在Visual Basic .NET中我们使用关键字NotInheritable来完成这一功能。如果一个类试图从密封类派生得到,编译器将抛出一个错误。
如果你比较细心,你可能注意到structs就是被密封的,因此你不能从structs中产生一个派生类。
在C#中,使用如下的类定义语句定义一个密封类:
// Sealed class
sealed class SealedClass
{
....
}
在下面的代码中,我定义了一个密封类SealedClass,并且在class1中使用了这个密封类。如果你运行这段代码,它会正常工作。但是一旦你试图从SealedClass中产生一个派生类,编译时就会出错。
using System; // Sealed class public int Add(int x, int y){ |
为什么要使用密封类?
我们刚刚看到了如何创建和使用一个密封类。使用密封类的主要目的是使用户不能获得继承特征,这样用户就不能从一个密封类中派生出自己的类。当你的类中有静态成员时,你可以把它定义成一个密封类,这也是密封类最好的用处之一。例如,System.Drawing命名空间下的Pens类(所有标准颜色的钢笔类)和Brushes类(所有标准颜色的画笔类)就是两个密封类。
Pens类代表所有标准颜色的钢笔。这个类中只要静态成员。例如,Pens.Blue代表蓝颜色的钢笔。同样地,Brushes类代表所有标准颜色的画笔,Brushes.Blue代表蓝颜色的画笔。
所以,当你在设计你的应用程序的时候,你应该记住,你可以使用密封类来防止其他用户继承你的类。
关于本文作者:Mahesh Chand是C# Corner的管理员和创立者。自从.NET测试版发放以来, Mahesh就一直在使用.NET编程。目前他主要进行ADO.NET, GDI+, and Windows Forms and Web Forms方面的研究。大家可以通过[email protected]与他联系.
本文地址:http://com.8s8s.com/it/it45193.htm