Java interfejsy funkcyjne.

0

Witam
Wszędzie czytam że interfejsy funkcyjne mogą mieć tylko jedna metodę abstrakcyjną. Ale co w przypadku interfejsu Comparator<T> który posiada dwie takie metody copmare() oraz equals() ? Wiem że metoda equals jest dziedziczona po Object, czy to oznacza że ona nie jest przez to liczona do tej puli metod abstrakcyjnych z których korzysta Lambda i defakto dalej mamy tak naprawdę jedna metodę abstrakcyjną ?
Pozdrawiam

1

Tak, dokładnie. Do limitu metod abstrakcyjnych nie liczą się metody klasy Object.

1

Wiem że metoda equals jest dziedziczona po Object,

Kluczowe stwierdzenie, to że jest dziedziczona. Klasa Object nie jest klasą abstrakcyjną, a to oznacza, że musi implementować wszystkie swoje metody. Ergo, istnieje co najmniej jedna implementacja metody equals w hierarchii dziedziczenia. Mówiąc prościej, jeżeli dziedziczysz po jakiejś klasie, to otrzymujesz wszystkie implementacje z tej klasy jako domyślne. Możesz je później nadpisać.

Metoda equlas w interfejsie jest zdefiniowana, ponieważ ma narzucone pewne dodatkowe warunki dla obiektów implementujących ten interfejs.

1 użytkowników online, w tym zalogowanych: 0, gości: 1