我试图在Scala的上下文中理解Mixins。特别是我想知道继承和Mixins之间的概念差异。
维基百科中对Mixin的定义如下:
一个mixin类充当父类,包含所需的功能。子类可以继承或仅重用此功能,但不能作为专门化的手段。通常,mixin将所需的功能导出到子类,而不创建严格的单一“是一个”关系。这里有一个重要的区别,即mixins和继承概念之间的区别,在于子类仍然可以继承父类的所有功能,但关于子类“是一个”父类的语义不一定适用。
在上述定义中,我不明白加粗的语句。那是什么意思呢?
- 子类可以通过mixin继承功能,但不能作为专门化的手段。
- 在mixins中,子类继承了父类的所有功能,但关于子类“是一种”父类的语义不一定适用。- 子类如何扩展父类而不一定是父类的一种类型?是否有这样的例子。