在.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 ChandC# Corner的管理员和创立者。自从.NET测试版发放以来, Mahesh就一直在使用.NET编程。目前他主要进行ADO.NET, GDI+, and Windows Forms and Web Forms方面的研究。大家可以通过mcb@mindcracker.com与他联系.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值