В чем разница между «класс C расширяет A с помощью B» и «класс C расширяет B», когда черта B расширяет черту A - PullRequest
9 голосов
/ 05 января 2012

Когда две черты определяются следующим образом,

trait A
trait B extends A

в чем разница между этими двумя.

class C extends B
class D extends A with B

Я не думаю, что для класса C или D необходиморасширяет черту A, так как черта B уже расширяет черту A.

Почему это часто написанное "класс D расширяет А с B"?

1 Ответ

6 голосов
/ 05 января 2012

Это очень хороший вопрос ... Я попробую ответить субъективным ответом.

Я думаю, что расширение A mixin с B важно, когдаиерархия будет линеаризована, в этом конкретном случае нет различий, но что если вы смешаете D с другой чертой E, которая переопределяет некоторые (но не все) функции из A, которые не рекомендуется в B для вашегонуждается в D.Таким образом, у вас будет

class D extends A with E with B

Более того, в этом случае мы сохраняем значение, что D равно a A

...