Motywacje dla domyślnych metod Java 8 i cech Scala są różne.
Pierwsza została wprowadzona, aby wspierać bezpieczną ewolucję API i ograniczoną formę wielokrotnego dziedziczenia. Korzystając z funkcjonalnych idiomów programowania w Project Lambda, korzystne było dodanie, na przykład, forEach(lambda)metody do java.util.Collectioninterfejsu bez zmiany wszystkich możliwych implementatorów (co jest w rzeczywistości niemożliwe bez zerwania wstecznej kompatybilności). Jako efekt uboczny oferowało to również formę mieszanki .
Cechy Scala zostały zaprojektowane od podstaw jako bloki konstrukcyjne do tworzenia modułowych komponentów. Są przyjazne dla wielokrotnego dziedziczenia i nie mają problemu z diamentami, ponieważ mają ścisłe zasady dotyczące kolejności oceny miksów z powodu linearyzacji. Obsługują również stan, mogą odwoływać się do klasy implementującej i nakładać ograniczenia na to, który typ może je mieszać. Zajrzyj do biblioteki kolekcji Scala, w której cechy są dokładnie wykorzystywane.