Po co są interfejsy w Javie

0

Cześć, możecie mi wytłumaczyć do czego używane są interfejsy. Znam definicje, znam zasadę tworzenia, ale nie wiem po co to wszystko. Skoro pisze kod i tworze np klasy auto i rower to chyba wiem, że muszą mieć metodę jedź i nie potrzebuje do tego interfejsu który wymusi na mnie napisanie tych metod. To samo pytanie tyczy się klas abstrakcyjnych. Mam mocne przekonanie, że czegoś nie doczytałem i dlatego nie zauważam ani tym bardziej nie rozumiem ich zalet. Mogę prosić o jakieś przykłady, które pozwolą mi zrozumieć sens istnienia tych mechanizmów?

0
C`a napisał(a):

Skoro pisze kod i tworze np klasy auto i rower to chyba wiem, że muszą mieć metodę jedź i nie potrzebuje do tego interfejsu który wymusi na mnie napisanie tych metod.

To napisz sobie nie używając interfejsów/klas abstrakcyjnych jedną metodę, która przyjmie kolekcję wszystkich Twoich pojazdów i wywoła metodę Jedź na każdym z nich.

0
C`a napisał(a):

Skoro pisze kod i tworze np klasy auto i rower to chyba wiem, że muszą mieć metodę jedź i nie potrzebuje do tego interfejsu który wymusi na mnie napisanie tych metod.

Tak, możesz mieć dwie osobne klasy i obie mogą posiadać metodę Go. Tyle że nie napiszesz sobie metody, która będzie mogła przyjąć dowolny obiekt posiadający metodę Go – musiałbyś skorzystać z polimorfizmu. Czyli stworzyć klasę abstrakcyjną z metodą Go (np. Vehicle), następnie utworzyć klasy Car i Bike i w nich nadpisać metodę Go.

Dopiero wtedy mógłbyć zdefiniować dla przykładu metodę, która w parametrze typu Vehicle będzie w stanie przyjąć obiekt klasy Car i Bike, a także każdy inny, który z Vehicle dziedziczy.

Użycie interfejsu rozwiązuje problem dziedziczenia. Wszystkie klasy muszą posiadać narzucone przez interfejs metody, ale nie muszą dziedziczyć z tej samej klasy abstrakcyjnej.

To samo pytanie tyczy się klas abstrakcyjnych. Mam mocne przekonanie, że czegoś nie doczytałem i dlatego nie zauważam ani tym bardziej nie rozumiem ich zalet.

No to idź poczytać i wróć jak już będziesz po lekturze.

0
somekind napisał(a):
C`a napisał(a):

Skoro pisze kod i tworze np klasy auto i rower to chyba wiem, że muszą mieć metodę jedź i nie potrzebuje do tego interfejsu który wymusi na mnie napisanie tych metod.

To napisz sobie nie używając interfejsów/klas abstrakcyjnych jedną metodę, która przyjmie kolekcję wszystkich Twoich pojazdów i wywoła metodę Jedź na każdym z nich.

ok czyli chodzi Ci pewnie że jak mam interfejs to mogę zrobić kolekcje składającą się z rożnych pojazdów, korzystając z polimorfizmu? to jest istotna cecha

0

ok czyli chodzi Ci pewnie że jak mam interfejs to mogę zrobić kolekcje składającą się z rożnych pojazdów, korzystając z polimorfizmu? to jest istotna cecha

możesz stworzyć kolekcję dowolnych obiektów implementujący dany interfejs.....

EDT .. polimorfizm nie jest do niczego potrzebny, obiekty mogą być z zupełnie różnych klas, jedyny warunek to taki że muszą implementować zadany interfejs

0

Interfejs to taki rodzaj umowy opisującej jakie operacje są/muszą być udostępnione przez klasę.
Czy klasa musi brać na siebie zobowiązanie w postaci wypełnienia umowy? Nie. Czy umowy są potrzebne? Zależy komu i w jakim celu :-)

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