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
0
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.