在.NET中使用密封类

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

在本文中,我将讨论如何创建和使用密封类。我还会告诉你微软的.NET类库中哪些地方使用到了密封类。

密封类被用来限制面向对象编程中的继承特性。一旦一个类被定义为密封类,那么它将不能被继承。

在C#中,我们使用关键字sealed来定义一个密封类,而在Visual Basic .NET中我们使用关键字NotInheritable来完成这一功能。如果一个类试图从密封类派生得到,编译器将抛出一个错误。

如果你比较细心,你可能注意到structs就是被密封的,因此你不能从structs中产生一个派生类。

在C#中,使用如下的类定义语句定义一个密封类:

// Sealed class

sealed class SealedClass

{

....

}

在下面的代码中,我定义了一个密封类SealedClass,并且在class1中使用了这个密封类。如果你运行这段代码,它会正常工作。但是一旦你试图从SealedClass中产生一个派生类,编译时就会出错。

using System;

class Class1

{

static void Main(string[] args)

{

SealedClass sealedCls = new SealedClass();

int total = sealedCls.Add(4, 5);

Console.WriteLine("Total = " + total.ToString());

}

}

// Sealed class

sealed class SealedClass

{

public int Add(int x, int y){

return x + 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方面的研究。大家可以通过mcb@mindcracker.com与他联系.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航