在.NET中使用密封类

类别:.NET开发 点击:0 评论:0 推荐:
 

 

       在本文中,我将讨论如何创建和使用密封类。我还会告诉你微软的.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 ChandC# Corner的管理员和创立者。自从.NET测试版发放以来, Mahesh就一直在使用.NET编程。目前他主要进行ADO.NET, GDI+, and Windows Forms and Web Forms方面的研究。大家可以通过[email protected]与他联系.

本文地址:http://com.8s8s.com/it/it45193.htm