![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Jak teraz w metodzie test() przenieść dane do obiektu dziecka? Wiem że mógłbym zadeklarować te zmienne jako protected, ale nie chcę. Dodatkowo nawet jakbym tak zrobił to bym i tak musiał je przepisywać ręcznie, bo klasa A implementuje Iterator i foreach($this) nie da mi dostępu do zmiennych składowych. Istnieje może jakaś metoda na kopiowanie tego czy muszę klepać wszystkie zmienne? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
To co robisz mija się z ideą dziedziczenia w programowaniu obiektowym. Skoro klasa B rozszerza klasę A, to znaczy, że w klasie B mamy takie same pola i metody, jak w klasie A. Przykład:
Pozostaje pytanie, dlaczego w klasie B nie mamy dostępu bezpośredniego do pól $zmienna_a i $zmienna_b. Otóż dlatego, że są to pola prywatne (private) klasy A, zatem dostęp do nich jest możliwy tylko z publicznej metody w tej właśnie klasie A. Dodam jeszcze jeden przykład: Aby zachować paradygmaty dziedziczenia i hermetyzacji danych, należałoby wykorzystać modyfikator dostępu protected. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 12:51 |