Мотивы использования методов по умолчанию в Java 8 и особенностей Scala различаются.
Первый был введен для поддержки безопасной эволюции API и ограниченной формы множественного наследования. Используя идиомы функционального программирования в Project Lambda, было полезно добавить, например, forEach(lambda)
метод java.util.Collection
интерфейса без изменения всех возможных средств реализации (что на самом деле невозможно сделать без нарушения обратной совместимости). В качестве побочного эффекта это также предлагало форму композиции миксина .
Типажи Scala были разработаны с нуля как строительные блоки для составления модульных компонентов. Они дружественны к множественному наследованию и не имеют проблем с ромбами, поскольку имеют строгие правила оценки подстановок из-за линеаризации. Они также поддерживают состояние, могут ссылаться на реализующий класс и накладывать ограничения на то, какой тип может их смешивать. Взгляните на библиотеку коллекций Scala, в которой тщательно используются трейты.