非法继承多重特征

时间:2014-11-22 11:49:24

标签: scala

我想在一些特性C:

中继承两个类(AbstractA和AbstractB)
abstract class AbstractA
trait A extends AbstractA

abstract class AbstractB
trait B extends AbstractB

trait C extends A with B

此代码未编译:

  

[错误]非法继承;超类AbstractA不是它的子类   mixin trait B的超类AbstractB

1 个答案:

答案 0 :(得分:3)

你不能从两个不同的类继承,因此你甚至不能从两个不同的类继承两个特征。

 AbstractA  AbstractB
    |           |
    |           |
    A           B
     \         /
      \       /
       \     /
        \   /
          C

如果允许,C将成为AbstractAAbstractB的子类,这是非法的。


无论如何,你的用例是什么?

特征可以包含抽象成员,因此您根本不需要从抽象类继承。