Mam na przykład interfejs A i B. A ma (abstrakcyjną) metodę o nazwie foo. B rozszerza A.Czy ma sens przesłonięcie metody w interfejsie
Możliwe jest zastąpienie foo w interfejsie B nawet przy @Override, ale czy jest jakakolwiek sytuacja, w której to ma sens? Nie ma nic do przesłonięcia, ponieważ obie metody muszą być abstrakcyjne i nie mieć ciała. Więc myślę, że nie ma sytuacji, w której to ma sens, prawda?
Dlaczego więc możliwe jest przesłonięcie interfejsu?
'addAll()' jest świetnym przykładem, ale być może powinieneś pokazać, jaka jest różnica w umowie. – dkatzel
Tak. Nazywa się to Typem Covariant Return. Zobacz https://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29#Covariant_method_return_type –
@ ErickG.Hagstrom W moim przykładzie oba zwracają 'void', ale funkcja typu covariant zwraca wciąż ogólnie :) – manouti