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?
Po co są interfejsy w Javie
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5238
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Tuchów
- Postów: 12272
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.
- Rejestracja: dni
- Ostatnio: dni
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
- Rejestracja: dni
- Ostatnio: dni
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