![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 266 Pomógł: 0 Dołączył: 4.01.2007 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Czytając książke o OOP, nie rozumiem metod ustaw i pobierz...
Po co takie metody tworzyć? Nie można działać bezpośrednio na danych składowych? np.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Klasy w wielu obiektowych lub obiektowo orientowanych językach mają 3 tryby dostępu: publiczny (public), prywatny (private) i chroniony (protected). Różnica między nimi jest taka, że do publicznego możesz się odwoływać bezpośrednio
$obiekt_klasy -> atrybut a więc zapis i odczyt są jawne. Wystarczy znać strukturę danych. Prywatne są zabezpieczone i nie odczytasz ich ani nie zapiszesz nic do nich bez metod, które sama klasa Ci udostępnia. Odwołanie jak do publicznego spowoduje błąd. Jest to zabronione. Dlatego właśnie musisz napisać metodę, która pozwala go ustawić lub odczytać, a więc pozwala zrobić tak: $obiekt_klasy -> odczytaj_pole_X(); Dostęp chroniony jest w samej klasie widoczny jako prywatny, ale klasa która po niej dziedziczy zamienia go w prywatny w swojej klasie (to zależy od języka programowania, gdyż w pewnych może on stać się publicznym ). Normalnie bowiem klasa nie dziedziczy pól klasy rodzica, a więc można powiedzieć, że dziecko wszystkie pola rodzica "zapomina", poza oczywiście tymi będącymi protected. Jeśli więc masz klasę A, zaś w niej pola public, private i protected, to po utworzeniu z niej klasy potomnej B znajdziesz wewnątrz tylko te, które były protected, ale będą one już teraz private (lub public w określonych językach). Jak więc widzisz definicja dostępu sprawia, że pola zachowują się różnie. Inaczej do nich odwołujesz, inaczej zachowują w przypadku tworzenia klasy pochodnej. Ale to są podstawy obiektówki, więc radzę Ci dobrze się przyłożyć do nich bo im głębiej w las tym więcej drzew o jakie można się rozbić. Ten post edytował thek 14.01.2010, 22:02:49 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 07:11 |