Незаконное наследование нескольких признаков

Я хочу наследовать два класса (AbstractA и AbstractB) в некоторой черте C:

abstract class AbstractA
trait A extends AbstractA

abstract class AbstractB
trait B extends AbstractB

trait C extends A with B

Этот код не скомпилирован:

[ошибка] незаконное наследование; суперкласс AbstractA не является подклассом суперкласса AbstractB миксин-черты B

1 ответ

Решение

Вы не можете наследовать от двух разных классов, и, как следствие, вы даже не можете наследовать от двух признаков, наследующих от двух разных классов.

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

Было ли это позволено, C будет подклассом обоих AbstractA а также AbstractB, что является незаконным.


Каков твой сценарий использования?

Черта может иметь абстрактные члены, поэтому вам вообще не нужно наследовать от абстрактного класса.

Другие вопросы по тегам