Ответ очень старый, поэтому, возможно, scala изменил это поведение, но для меня сейчас это выглядит так, как будто это неправильно. Линеаризация должна быть: Реализация, Абстракция, Черта, ...

е работает:

trait Trait
class Class extends Trait with Trait

Компилятор жалуется:

<console>:8: error: trait Trait is inherited twice
       class Class extends Trait with Trait
                           ^
<console>:8: error: trait Trait is inherited twice
       class Class extends Trait with Trait
                                      ^

Это делает:

trait Trait
class Abstraction extends Trait
class Implementation extends Abstraction with Trait

Вопросов:

Почему это работает?Чем отличается второй фрагмент? (относительно вопроса двойного наследования)Второй фрагмент или шаблон как-то полезен?

Ответы на вопрос(1)

Ваш ответ на вопрос