Wpis z mikrobloga

#programowanie #java #ciekawostki

W Javie 8 wprowadzono możliwość dodania domyślnej implementacji metod w interfejsach (tak jak to było w klasach abstrakcyjnych).

Z wielu klas nie można dziedziczyć. A implementować wiele interfejsów tak. Co się stanie jak klasa implementuje kilka interfejsów i w każdym z nich jest metoda z domyślną implementacją? Która implementacja ma zostać zastosowana? Pierwsza? Ostatnia? Kompilator nie wie i wrzuci błąd.

Jak sobie z tym radzić? Po prostu nadpisujemy daną metodę i możemy wywołać jawnie tą którą chcemy: NazwaInterfejsu.super.nazwaMetody();
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mrowkojad04: no racja, prościej napisałeś. I w tej implementacji możemy jawnie wywołać którąś z istniejących implementacji.

Zastanawiałem się jak to jest z klasami z dziedziczeniem w językach, które pozwalają na dziedziczenie po wielu klasach (np. C++, w nim obiektowo nie programowaniem, więc nie wiem). Ale podejrzewam, że tak samo, bo innego sensownego rozwiązania nie widzę.
  • Odpowiedz
@mrowkojad04: tak, napisałem jako ciekawostkę bo akurat przeczytałem i uznałem że jak ktoś by coś takiego napisał, to chętnie bym przeczytał. Liczyłem też na jakiś komentarz, bo na forach różne opinie są (albo że dobra zmiana albo że zła).
  • Odpowiedz