C#中的"sealed"关键字,Java中的Final.
因为我几乎从不创建任何图表,我只使用已经完成的类(来自框架)我仍然多年后不知道为什么有人"锁定"一个类,所以它永远不会被扩展/继承.
它是有益的?有没有什么危害使得所有类都可以从继承中扩展掉掉"密封它"的可能性?
很抱歉在2012年问OOP是微不足道的,但我希望收到一个很好的解释和/或一个很好的阅读来源!因为对我来说没用,我无法相信它只是一个简单的概念.
但在任何地方,我搜索的答案都是一样的:"标记一个类,防止它从其他人那里继承."
安全性 - 继承类可能有权访问基类的内部部分,从而破坏了封装
保留契约 - 继承类可能会破坏基类提供的契约.见Liskov替代原则
不可变性 - 继承类的特殊情况可以将可变字段引入不可变类
性能 - 虚拟机可以积极地优化这些类,例如假设方法永远不会被覆盖,从而避免虚拟调用
简单 - 实现类似的equals()方法更简单,而不必担心继承