oop - 混合与继承

标签 oop inheritance mixins

mixin 和继承有什么区别?

最佳答案

mixin 通常与多重继承一起使用。因此,从这个意义上说,“没有区别”。

细节是,mixin 作为独立对象很少有用。

例如,假设您有一个名为“ColorAndDimension”的混合宏,它添加了一个颜色属性以及宽度和高度。

现在,您可以将 ColorAndDimension 添加到 Shape 类、Sprite 类、Car 类等。它们都将具有相同的接口(interface)(比如 get/setColor、get/setHeight/Width 等)

因此,在一般情况下,mixin 是继承。但是您可以争辩说,混合宏是“主要”类还是简单的混合宏,这取决于类在整个领域中的作用。


编辑——只是为了澄清。

是的,在今天的现代术语中,mixin 可以被认为是具有关联实现的接口(interface)。它真的只是普通的、旧的、日常的多重继承,使用普通的、旧的、日常的类。它恰好是 MI 的一个具体应用。大多数语言都不给 mixin 任何特殊地位;它只是一个旨在“混合”而不是独立使用的类。

关于oop - 混合与继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34978963/

相关文章:

C++ 继承结构

r - 是否有可能使用Mixins在Raku中复制R的 'named vectors'概念的简便方法?

css - sass 使用变量作为 mixin 数据

Javascript OOP 继承

c# - 避免 if/else 的最佳实现

c++ - 复制构造函数不被继承

python - 当它们在父级中更改时,如何访问从另一个模块继承的变量?

architecture - 何时在 Vue 指令上使用 Vue mixin,反之亦然?

java - 为什么在创建抽象类的引用类型对象和访问其自己的成员时存在这种差异?

java - 使静态嵌套类构造函数参数立即可用的最佳方法?