Wpis z mikrobloga

Czytam książkę o #java
Jest tu takie zdanie :
"Choć można deklarować zmienne, używając interfejsu jako ich typu, nie jest możliwe utworzenie instancji obiektu, którego typem będzie interfejs. Wszystkie obiekty muszą być instancjami klas. "
Moglby mi to ktoś lepiej wyjaśnić?
Skoro nie mogę mieć instancji interfejsu to po co mi zmienna o typie interfejsu? Ogólnie trochę zakręcone to zdanie, a nie podano przykładu.
#programowanie #naukaprogramowania
  • 4
@FantaZy: Zmienna z typem interfejsu to bardzo fajna rzecz, dzięki której nie musisz znać prawdziwej implementacji klasy. Idealnym przykładem są kolekcje:

final Collection sentencjePauloCoehlo = new HashSet();
Dzięki temu masz dostęp do metod, które udostępnia interfejs https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html bez znajomości implementacji.

Ale po co?
Masz metody, które przyjmują właśnie kolekcję czegoś. Ciebie interesuje aby coś znaleźć w kolekcji, gdybyś zamiast interfejsu użył klasy musiałbyś przygotować osobną metodę dla Setu, ArrayListy, LinkedListy i
@FantaZy: zmienna o typie interfejsu nie musi zawierać (a właściwie w javie nawet nie może) zawierać obiektu typu interfejs, ale może zawierać obiekt klasy implementującej interfejs. Tak jak z klasami abstrakcyjnymi nie może być obiektu typu klasa abstrakcyjna, ale zmienna tego typu już tak.
Robi się tak dlatego by wykorzystać założenia obiektowości - masz klasę implementującą interfejs, to możesz wykorzystywać metody interfejsu nawet nie wiedząc jaka to dokładnie klasa, wystarczy ci,