![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 23.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Nigdzie nie moge doczytac jaka jest praktyczna roznica miedzy interfejsem i klasa abstrakcyjna. Teorie znam, interfejs definiuje nagłowki metod danej klasy, klasa abstrakcyjna ma wieksze mozliwosci, moze ponadto definiowac zawartosc metody. Chodzi mi jednak jak to sie sprawdza w praktyce, kiedy zastosowac interfejs a kiedy klase abstrakcyjna, po co tak naprawde mam w ogole definiowac "ogolny zarys" klasy w interfejsie czy klsaie abstrakcyjnej? Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Mi wydaję się, że różnica jest bardzo duża (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ostatnio np. pisałem klasę która miała około 20 metod, w tym chyba 2 abstrakcyjne -> klasy dziedziczące nadpisywały tylko te dwie metody. Tutaj klasa abstrakcyja była bardzo fajnym rozwiązaniem.
Interfejs ma natomiast inną przewagę: jedna klasa może implementować bardzo wiele interfejsów. Druga kwestia, taka może troche bardziej koncepcyjna, to to, że klasa abstrakcyjna zazwyczaj jest dość mocno związana z obiektami dziedziczącymi w sensie logicznym -> czyli np. jak ktoś mówił tworzysz klasę Planet a potem wszystkie planety dziedziczą po tej klasie. Interfejsc natomiast nie musi być już tak mocno związany z daną klasą -> np możesz stoworzyć interfejs Idestroyable, który mówi że dany obiekt może zostać zniszczony. Taki interfejs możesz nadać zarówno obiektomy klasy Planet, Star, Person, Car itp. Różnica IMHO jest dość znaczna, ale wychodzi dopiero w większych projektach, gdzie trzeba śledzić wiele zależności itp. W małych projektach typu strona z panelem admina różnica jest często praktycznie niewidoczna. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 10:18 |