PHP - obiektowe PHP - unieważnianie
| DZIAŁANIE: |
Ten gość nazywa się : Bartek i jest super!! Ten koleś jest do niczego i nazywa się : Paweł Ten gość nazywa się : Paweł i jest super!! |
Kod:

Ewentualne Objaśnienia:
Czasem może być tak, że mamy jakąś klasę oraz klasę potomną utworzoną od niej. Klasa rodzica posiada jakiś argument oraz funkcję odnoszącą się do tego argumentu. Klasa potomna oczywiście odziedziczy to - ale my chcielibyśmy aby nasza klasa potomna miała inne wartości dla składowej odziedziczonej oraz inne jakieś działanie dla funkcji odziedziczonej. Działanie takie nazywa się unieważnianiem - należy pamiętać, że nowa deklaracja zmiennej oraz funkcji w klasie potomnej nie ma wpływu na wartości tych elementów w klasie rodzica !!
Widać to wszystko ładnie na kodzie :
- tworzymy klasę Szef z jedną składową oraz funkcją
- tworzymy klasę potomną - pracownik dla której unieważniamy wartość składowej
imie oraz funkcji opiszGoscia
- widać kiedy tworzymy obiekt klasy Szef i wywołamy naszą funkcję pojawią się
dane z klasy A - czyli klasa potomna nie ma wpływu na klasę rodzica
- kiedy tworzymy obiekt klasy pracownik i wywołamy funkcję uzyskujemy dane inne
niż w klasie rodzica, czyli te z klasy pracownik - dzięki unieważnianiu
- w klasie potomnej również dodałem nową funkcję - korzysta ona ze znanej już
Wam składni parent::NazwaKlasyRodzica - czyli dzięki temu wywołujemy w klasie
pracownik funkcję opiszGoscia z klasy Szef ( klasy przodka ) - ale jak widać na
przykładzie mimo wywołania funkcji klasy przodka, PHP użyje wartości atrybutu z
klasy bieżącej.
Jeżeli chcielibyśmy aby jakaś funkcja w naszej klasie nie mogła być unieważniana należy użyć słowa kluczowego final - tak jak widać w kodzie przed nazwą funkcji dajemy słowo final co powoduje iż w momencie próby unieważnienia tej funkcji w klasie potomnej - zostanie wyświetlona informacja o błędzie.
Podobnie jeżeli chcemy uniemożliwić dziedziczenie po klasie również stosujemy final - wpisujemy go przed deklaracją klasy - przed słowem class .