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

时间:2012-01-05 09:14:52

标签: class scala traits

当两个特征定义如下时,

trait A
trait B extends A

这两者之间有什么区别。

class C extends B
class D extends A with B

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

为什么这经常写成“D级用A扩展A”?

1 个答案:

答案 0 :(得分:6)

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

我认为,当层次结构被线性化时,将A mixin扩展为B非常重要,在这种特殊情况下,如果你将D与另一个特征混合,会有什么不同之处{ {1}}重新实现了A中的一些(但不是全部)函数,这些函数在E B中未得到明确建议,以满足您在D中的需求。所以你有

class D extends A with E with B

此外,在这种情况下,我们保留D A

的含义