在.NET中使用密封类

在本文中,我将讨论如何创建和使用密封类。我还会告诉你微软的 .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 方面的研究 。大家可以通过 [email protected] 与他联系 .

Published At
Categories with Web编程
Tagged with
comments powered by Disqus