【发布时间】:2008-10-31 00:38:58
【问题描述】:
我只是想知道,既然 sealed 关键字的存在表明,是否允许其他类继承它是类作者的决定,为什么默认情况下类不密封,有一些关键字将它们显式标记为可扩展?
我知道这有些不同,但访问修饰符以这种方式工作。默认设置是限制性的,只有插入关键字才能授予更全面的访问权限。
不过,我很有可能没有正确考虑到这一点,所以请保持人道!
【问题讨论】:
-
我认为,如果您将类默认密封,那么这意味着您不应该使用面向对象的语言。
-
我在 .NET Framework 中遇到了太多次我想要继承和覆盖功能的密封类。内部也是如此。
-
一种有对象和消息但没有继承的语言不是面向对象的,而仅仅是基于对象的
-
@Chris:如果您仍然对密封的 .NET Framework 类不满意,您可能会发现 blogs.msdn.com/b/ericlippert/archive/2004/01/22/61803.aspx 是一本有趣的书。
-
来自 MSDN:要确定是否密封类、方法或属性,通常应考虑以下两点:1) 派生类可能通过自定义类的能力获得的潜在好处. 2)派生类可能会修改您的类,使其不再正常工作或按预期工作。 . .我的偏好是,如果我作为一个类的作者不需要额外的工作来允许其他人从中派生,我不会将它标记为密封。但是,如果我的课程不是为以某种微妙的方式派生而设计的,请密封它。
标签: c# inheritance sealed