gpt4 book ai didi

OOP 哲学(摘自《Scala 编程》中的组合和继承)

转载 作者:行者123 更新时间:2023-12-02 20:46:27 27 4
gpt4 key购买 nike

在《Scala 编程》第 239 页中,第一段说:

Composition and inheritance are two ways to define a new class in terms of another existing class. If what you’re after is primarily code reuse, you should in general prefer composition to inheritance. Only inheritance suffers from the fragile base class problem, in which you can inadvertently break subclasses by changing a superclass.

对我来说还不清楚。任何人都可以展示这种情况的示例,最好带有一些代码吗?

最佳答案

fragile base class problem对于所有支持继承的系统都是通用的。这意味着对父类(super class)型(您继承的类)的更改可能会给您带来意想不到的结果:更改使您打破对基类的假设。请参阅this related SO question获取解释和示例。

相比之下,Scala 将父类的后添加导出到外部独立特征,您可以使用 Mixin Composition 将其添加到子类型中。请参阅this example ,并将“RichIterator”视为您希望在定义基础 AbsIterator 后对其进行的更改。看看 mixin 如何不改变父类的任何内容,但仍然可以在子类型中轻松重用?

关于OOP 哲学(摘自《Scala 编程》中的组合和继承),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8716338/

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