Každopádně když jsem začal používat rozhraní s default metodama (traity) dalo mi to větší flexibilitu a svobodu, ale zároveň lepší konzistenci. Je to tak trochu lék na nadužívání hiearchie tříd a nepřítomnost vícenásobné dědičnosti. Ale ve stávající podobě to stále není kompletní.
No jasně, dědičnost a kompozice se doplňují, to není žádná náhrada. Proto jsou úchylné ty příklady údajně nefunkční dědičnosti, když jde ve skutečnosti o kompozici a dědičnost vůbec neměla být použitá.
Defaultní metody používáme úplně stejně, workaround, ale dá se. Nicméně holt budu mít public metody místo protected a sem tam nějaký field navíc, když jej nemohu strčit rovnou k rozhraní, ale pořád radši bezpečí typového systému + generik a možnosti nabízené kvalitním IDE Javy. Až to do javy dodělají, bude triviální public změnit na protected, příp. přesunout ty duplicitní fieldy z implementací rovnou do společného rozhraní/traitu.
Navíc spoustu komponent pracuje právě s jednou funkcionalitou/rozhraním/traitem, to už lze/je potřeba mít správně oddělené dneska.
Jenže to vše vyžaduje aspoň trochu kompetentního vývojáře, který nemíchá jablka a hrušky do jedné třídy a pak si stěžuje, že mu dědičnost hází klacky pod nohy.