Uczę się groovy i właśnie dowiedziałem się o nowej funkcji dodanej w 2.3, która jest dodatkiem do cech . Teraz wydaje mi się, że cechy pozwalają zrobić w zasadzie wszystko, co może zrobić superklasa i interfejs.
Czy dodanie cech do Groovy powoduje, że dziedziczenie i interfejsy stają się przestarzałe?
A jeśli nie, to kiedy najlepiej wykorzystać każdy z tych mechanizmów?
interfaces
inheritance
groovy
Ryan Stull
źródło
źródło
Odpowiedzi:
Cechy łączą to, co najlepsze z obu światów - dziedziczenie (abstrakcyjnych) klas i implementację interfejsów. Cecha może zawierać domyślne implementacje metod, a jednak typ może implementować wiele cech jednocześnie. Umożliwia to pewnego rodzaju wielokrotne dziedziczenie, ale w dobry sposób, unikając śmiertelnego diamentu śmierci .
Jeśli nie wiesz, jak zacząć, użyj cech. Zyskujesz elastyczność i możesz w razie potrzeby przełączyć się na interfejsy lub dziedziczenie klas.
źródło