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? |
|
|
|
![]() |
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. |
|
|
|
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 
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 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 05:04 |