Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> klasy abstrakcyjne
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Tworząc interfejs używamy słowa abstract przy definicji metod.

Po co używa się tego słowa przy definicji klas (lub funkcji - w przypadku gdy nie jest to interfejs) ?
W jakim celu tworzyć abstrackyjne klasy?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thornag
post
Post #2





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


@J4r0d Wracajac jeszcze do pytania abstrakcyjne. Pamietasz swoje pytanie dotyczace przekazywania parametrow do metod w stylu addItem(Item $item).

Jasnym jest ze mozesz przekazac tutaj wszystkie instancje class ktore implementuja interfejs Item. Powiedzmy ze ten interfejs wymusza implementacje metody Pokaz() i Schowaj().
A co jesli 4 klasy ktorych chcesz uzywac maja taka sama metode Schowaj() ?
Bedziesz ja przepisywac od nowa ? No nie a tak to mozesz utworzyc abstrakcyjna klase Item w ktorej bedzie ta wpolna metoda w pelni zaimplementowana no i wymuszisz implementacje Pokaz().

Mozna by powiedziec ze po co mi abstrakcja skoro mozna dziedziczyc po zwyklej. No tak ale zwykla klasa nie wymusisz implementacji metody Pokaz() pozatym nie ma sensu tworzyc instancji klasy zawierajacej sama metode Schowaj() wiec tutaj przydaje sie abstrakcja. Nie dosc ze masz zapewnione to ze wszystkie kalsy beda mialy zaimplementowane wymagane przez Ciebie metody to jeszcze korzystasz z zalet dziedziczenia. Swoja droga to sie chyba nazywa polimorfizm (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) to ze klasa wie od jakiej klasy pochodzi i mozna ja przekazac do metody jak wyzej.
Go to the top of the page
+Quote Post

Posty w temacie
- J4r0d   klasy abstrakcyjne   9.08.2006, 19:44:56
- - Apo   W przeciwieństwie do interfejsów w klasach abstrak...   9.08.2006, 19:56:25
- - envp   Heh wytlumaczone dobrze, ale dziwnie. J4r0d: poj...   10.08.2006, 03:10:21
|- - J4r0d   Cytat(envp @ 10.08.2006, 02:10 ) Heh wytl...   11.08.2006, 21:03:44
|- - Apo   Cytat2. Co dokładnie daje dodanie słowa static po ...   12.08.2006, 09:39:59
|- - J4r0d   Cytat(Apo @ 12.08.2006, 08:39 ) Nie musis...   24.08.2006, 20:20:40
- - Ludvik   Klasy abstrakcyjne nie są wygodnym narzędziem do d...   10.08.2006, 10:01:30
- - J4r0d   Mniej więcej łapie. Wychodzi na to, że lepiej używ...   10.08.2006, 19:17:10
- - Ludvik   CytatWychodzi na to, że lepiej używać klas abstrak...   10.08.2006, 19:29:19
|- - J4r0d   Cytat(Ludvik @ 10.08.2006, 18:29 ) Pamięt...   10.08.2006, 22:40:38
- - Ludvik   A sprawdziłeś czy to działa? Na mój gust działa......   10.08.2006, 22:46:40
|- - J4r0d   Cytat(Ludvik @ 10.08.2006, 21:46 ) A spra...   10.08.2006, 23:11:05
- - Ludvik   Kilka tematów niżej jest przykładowa odpowiedź.   10.08.2006, 23:14:54
- - Cysiaczek   Sporo sensu to ma. np. interfejsy: 1. save(), loa...   10.08.2006, 23:17:10
- - Ludvik   W definicji interfejsów nie używamy słowa abstract...   11.08.2006, 21:06:21
- - Cysiaczek   A do pozostałych nie - o to właśnie chodzi.Własni...   24.08.2006, 20:35:47
|- - J4r0d   Cytat(Cysiaczek @ 24.08.2006, 19:35 ) Jeś...   24.08.2006, 20:52:00
- - dr_bonzo   Nie ma klas statycznych, moga byc tylko metody sta...   24.08.2006, 20:51:28
- - Cysiaczek   Faktycznie - trochę nieściśle si...   24.08.2006, 21:27:43
- - thornag   @J4r0d Wracajac jeszcze do pytania abstrakcyjne. P...   25.08.2006, 15:53:26
|- - J4r0d   Cytat(thornag @ 25.08.2006, 14:53 ) Jasny...   25.08.2006, 22:59:29
- - thornag   Wroce do przykladu z ksiazki. Masz jakis mechanizm...   26.08.2006, 10:24:39


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: 26.12.2025 - 05:04