:::info 类D中混入了特质B和特质C,其中特质B和特质C都重写了特质A中的m1方法。此时类D调用m1方法时执行的是哪个方法?这就是钻石问题 ::: image.png
    当一个类混入多个特质的时候,Scala会对所有的特质及其父特质按照一定的顺序进行排序,排序顺序如下:

    1. class D extend TraitB with TraitC

    第一步:列出混入的第一个特质B的继承关系,作为临时叠加顺序
    image.png
    第二步:列入混入的第二个特质C的继承关系,并将该顺序叠加到临时顺序前边,已出现的特质不再重复
    image.png
    第三步:将子类D放在叠加顺序的第一个,得到最终的叠加顺序
    image.png