Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasy i metody abstrakcyjne i finalne, Do czego wykorzystać je w praktyce?
1010
post
Post #1





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


Witam, poznałem właśnie jak działają klasy i metody abstrakcyjne i finalne, ale zupełnie nie wiem do czego można by je wykorzystać w praktyce. Czy ktoś mógłby mi przedstawić jakiś prosty przykład, wraz z wytłumaczeniem "z czym to się je"?

Z góry dziękuje za pomoc...


PS. Moje początki w obiektówce są dosyć trudne.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ludvik
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Klasa abstrakcyjna to uogólnienie klas, które reprezentują obiekty. Dziedzicząc z niej, możesz skonkretyzować niektóre jej cechy i zachowania. Metoda abstrakcyjna służy do określenia interfejsu, lecz nie posiada ciała metody, więc nie można jej wywołać. Klasa z metodą abstrakcyjną jest również abstrakcyjna. Jakiś głupi przykład najlepszy.

  1. <?php
  2. abstract class Zwierze {
  3. public abstract function pobierzNazwe();
  4. }
  5.  
  6. class Pies extends Zwierze {
  7. public function pobierzNazwe() {
  8. return 'Pies';
  9. }
  10. }
  11.  
  12. ...
  13. ?>


Nie stworzysz obiektu klasy Zwierze, bo zwierzę jest bytem dosyć abstrakcyjnym. Możemy wszystkie obiekty traktować jako zwierzęta, ale tak naprawdę są one instancjami innych klas (np. Pies).

Przykład bardziej z życia - wzorzec Template Method.

Jeżeli podpiszesz coś słowem kluczowym final, to nie zmienisz już tego. Klas finalnych nie można dziedziczyć, a metod nadpisywać. W Javie metody finalne nie są wiązane dynamicznie, bo nie ma takiej potrzeby, dzięki czemu nieco zyskuje się na wydajności. Lepiej jednak nie naduzywać tego mechanizmu.

Najlepiej zaopatrz się w jakąś porządną książkę, jest sporo pozycji, które to dokładniej omówią.
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: 7.10.2025 - 11:19