Metody finalne a dziedziczenie
Założenie: Zrozumieć, jak działa modyfikator final
w kontekście metod i dziedziczenia w PHP oraz zapobiec niezamierzonemu nadpisywaniu metod.
Krok po kroku:
- Tworzenie klasy bazowej: Zdefiniujmy klasę bazową
Animal
z metodąmakeSound()
. - Tworzenie klasy pochodnej bez modyfikatora
final
: Utwórzmy klasę pochodnąDog
dziedziczącą poAnimal
i nadpisującą metodęmakeSound()
. - Tworzenie klasy pochodnej z metodą
final
: Zdefiniujmy klasę bazowąCat
z metodąmakeSound()
oznaczoną jakofinal
. - Wywołanie metod: Stwórzmy obiekty klas i wywołajmy metodę
makeSound()
.
Ten kod definiuje klasę Animal
z publiczną metodą makeSound()
, która wypisuje komunikat “Generic animal sound”.
Klasa Dog
dziedziczy po Animal
i nadpisuje metodę makeSound()
, aby wypisać “Woof!”.
Metoda makeSound()
w klasie Cat
jest oznaczona jako final
. Próba nadpisania jej w klasie pochodnej Kitten
spowoduje błąd.
makeSound(); // Wynik: Generic animal sound
$dog = new Dog();
$dog->makeSound(); // Wynik: Woof!
$cat = new Cat();
$cat->makeSound(); // Wynik: Meow!
// $kitten = new Kitten();
// $kitten->makeSound(); // Błąd kompilacji, jeśli odkomentować
?>
Ten kod demonstruje, jak działa nadpisywanie metod i jak modyfikator final
zapobiega temu.
Ten przykład pokazuje podstawowe zastosowanie modyfikatora final
w metodach. Zachęcamy do dalszego zgłębiania tematu dziedziczenia i modyfikatorów dostępu w PHP!