.NET 指南:密封类的扩展性限制

你可以通过密封成员的方式来限制开发者对你的库的扩展方式。在你密封一个类的时候,其他类就不能够从它那里继承。在你密封一个成员的时候,派生类就不能够重载该成员的实现。默认时你不应该密封任何类型和成员。密封可以防止针对于库类型和成员的定制,并且会影响一些开发者对于可用性的理解。另外,可扩展性是使用面向对象框架的一种基本利益。你应该不要随意地对这种利益进行约束。

不要在没有充足理由这样做的前提下密封一个类。

不要假设因为你不看扩展类将是合意的情节,那么它就是被适当密封的类。你应该为符合某些条件的类进行密封:

  • 这个类是静态的。
  • 这个类包含了被继承的并拥有安全敏感信息的被保护成员。
  • 这个类继承了许多虚拟成员并且密封每个成员的开发代价和测试代价要比密封整个类要更加昂贵。
  • 这个类是一个需要使用反射来进行快速搜索的特性。密封一个特性能够在获取特性的时候改进反射的性能。
不要在被密封的类型中声明被保护的成员或虚拟成员。

如果类型是被密封的,那么它就不能够拥有派生类。而被保护的成员只能够从派生类中被访问,并且虚拟成员也只能够在派生类中被重载。

考虑对重载成员进行密封。

你可以使用这种方式来确保派生类没有被更改或者为当前类和所有派生类而迂回所必需的行为。

转载于:https://www.cnblogs.com/Laeb/archive/2007/02/02/638276.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值