Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]widoczność pola protected w klasach dziedziczących
Forum PHP.pl > Forum > Przedszkole
yaotzin


Chciałbym wykonać coś takiego na wzór tego co jest przedstawione an powyższym diagramie. Czyli klasa główna zawierajaca pole chronione, do tego jakiś zestaw metod w klasie, następnie z tej klasy dziedziczą kolejne klasy, z tym że kolejne klasy mogą modyfikować wartość atrybutu chronionego z klasy głównej. Modyfikację robię za pomocą metody initAtrybut. No i tu pojawia się problem, nie mogę modyfikować atrybutu globalnego, jeśli dwa razy wywołam po sobie obiekty klasy mojaKlasa1 i mojaKlasa2.

Wygląda to tak, jakby stworzenie obiektu klasy mojaKlasa2 przysłaniało zawartość atrybutu stworzonego za pośrednictwem klasy mojaKlasa1. Pierwszy raz robię coś takiego, że modyfikuję pole globalne klasy nadrzędnej w klasach dziedziczących. Zazwyczaj starałem się tego unikać... i nigdy nie miałem też takiej potrzeby. Akurat teraz jakoś wpadłem na taki pomysł no i... coś nie trybi. Zawsze sądziłem, że w przpadku pól globalnych, to po odziedziczeniu są one tworzone tak jakby na nowo dla danej klasy dziedziczącej.

Może to ktoś wyjaśnić po krótce. I proszę nie odsyłać mnie do google. Tam szukałem smile.gif I przejrzałem też książkę "Thinking in JAVA Wydanie IV", być może to ostatnie zrobiłem zbyt pobieżnie.

Pozdrawiam i dziękuję za odpowiedź smile.gif
cojack
metody dostępowe w klasie macierzystej do zmiennych chronionych.
dr_bonzo
@yaotzin:

Mylisz pola klasy i pola obiektu.

Pola klasy to
Kod
static protected $jakiesPole;


a pola obiektu
Kod
protected $poleObiektu;
.

Pola klasy sa wspolne dla wszystkich podklas tej klasy.
Natomiast pola obiektu naleza tylko do jednego obiektu:

$a1 = new MojaKlasa1();
$a2 = new MojaKlasa2();

to sa zupelnie rozne obiekty i maja zupelnie rozne pola obiektow (i nie przyslaniaja swoich wartosci, a po prostu operuja na innych zmiennych).
yaotzin
Masz rację i już to wiem smile.gif Ale dzięki za wyjaśnienie smile.gif Nie ważne ile człowiek siedzi w jakiejś technologii zawsze znajdzie coś co go zaskoczy smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.