gpt4 book ai didi

oop - 为什么 OOP 中的类有一个选项可以标记为从不继承自祖先?

转载 作者:行者123 更新时间:2023-12-04 17:53:12 27 4
gpt4 key购买 nike

C# 中的“密封”关键字,Java 中的 Final。

因为我几乎从不创建任何图表并且我只使用已经完成的类(来自框架)我多年后仍然不知道为什么有人会“锁定”一个类所以它永远不会被扩展/继承。

它是有益的?
是否有任何危害使所有类都可以从继承中扩展,从而放弃“密封”的可能性?

很抱歉在 2012 年问这个 OOP 是微不足道的,但我希望得到一个很好的解释和/或一个很好的阅读来源!因为对我来说是无用的,我无法相信它只是一个简单的概念。

但在我搜索的任何地方,答案都是一样的:“标记一个类,防止它从其他人那里继承。”。

最佳答案

  • 安全 - 继承类可能可以访问基类的内部部分,破坏封装
  • 保存契约(Contract) - 继承类可能会破坏基类提供的契约。参见 Liskov 替换原则
  • 不变性 - 2 的特例。 - 继承类可以将可变字段引入不可变类
  • 性能 - 虚拟机可以积极优化此类类,例如假设方法永远不会被覆盖,避免虚拟调用
  • 简单 - 实现方法如 equals()不用担心继承要简单得多
  • 关于oop - 为什么 OOP 中的类有一个选项可以标记为从不继承自祖先?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588158/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com