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"?
这是一个非常好的问题......我会尝试回答主观反应.
我想扩展A混入用B时是重要的层次进行线性化处理,在这种特殊情况下不存在差异,但如果你的mixin D另一个特点E,从一个未很好的建议在重新实现了一些(但不是全部)功能B的你的需求D.所以你有
class D extends A with E with B
Run Code Online (Sandbox Code Playgroud)
此外,在这种情况下,我们不断的意义D 是一个A