Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Roznica miedzy interfejsem i klasa abstrakcyjna
Vomit
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
athabus
post
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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 10:18