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