class E
class F extends E
class G
trait H extends E // H特质的超类是E
trait J extends F // J特质的超类是F,但F是E的子类
//class K extends G with H with J //错误 超类G不是超类E的子类(E是H特质的超类)
如果换成如下代码:
class E
class F extends E
class G
trait H extends E // H特质的超类是E
trait J extends F // J特质的超类是F,但F是E的子类
trait L extends G
//class M extends E with J //错误 超类E不是特质J的超类F的子类
如果将上面extends E换成F的子类?
class E
class F extends E
class G
trait H extends E // H特质的超类是E
trait J extends F // J特质的超类是F,但F是E的子类
trait L extends G
class N extends F
class O extends N with J //实验成功
//所以:类O所extends和with的父类和特质中,必须要有共同的超类或超类的子类,从形式上来说,只要是这条继承链路上的涉及到的类,
// 必须是同一个类或其子类,类越后来定义则越extends更低层次的子类/孙子类,把握一个原则就是不能在整个链路上造成多继承类