当特质B扩展特征A时,"C类扩展A与B"和"C类扩展B"之间有什么区别

tak*_*ata 9 scala class traits

当两个特征被定义为这样时,

trait A
trait B extends A
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别.

class C extends B
class D extends A with B
Run Code Online (Sandbox Code Playgroud)

我不认为C类或D类有必要扩展特质A,因为特质B已经扩展了特质A.

为什么这经常写成"D级扩展A与B"?

and*_*lla 6

这是一个非常好的问题......我会尝试回答主观反应.

我想扩展A混入用B时是重要的层次进行线性化处理,在这种特殊情况下不存在差异,但如果你的mixin D另一个特点E,从一个未很好的建议在重新实现了一些(但不是全部)功能B的你的需求D.所以你有

class D extends A with E with B
Run Code Online (Sandbox Code Playgroud)

此外,在这种情况下,我们不断的意义D 一个A