Dziedziczenie a typy sparametryzowane
Założenie: Stworzymy klasę bazową Lista
i rozszerzymy ją o klasę ListaLiczb
, która będzie mogła przechowywać tylko liczby, wykorzystując typy sparametryzowane (generics) w PHP.
Krok po kroku:
- Krok 1: Tworzenie klasy bazowej
Lista
.dane[] = $element; } public function wyswietl(): void { echo "Zawartość listy: " . implode(", ", $this->dane) . PHP_EOL; } } ?>
Ta klasa definiuje podstawową funkcjonalność listy – dodawanie i wyświetlanie elementów.
mixed $element
oznacza, że klasa może przyjmować dowolny typ danych. - Krok 2: Tworzenie klasy
ListaLiczb
dziedziczącej poLista
z ograniczeniem typu.Klasa
ListaLiczb
dziedziczy poLista
, ale metodadodaj
przyjmuje tylko liczby całkowite (int
) lub zmiennoprzecinkowe (float
). Próba dodania innego typu danych spowoduje błąd. - Krok 3: Testowanie klas.
dodaj(10); $listaLiczb->dodaj(3.14); $listaLiczb->wyswietl(); // Wyświetli: Zawartość listy: 10, 3.14 $lista = new Lista(); $lista->dodaj(10); $lista->dodaj("tekst"); $lista->wyswietl(); // Wyświetli: Zawartość listy: 10, tekst ?>
Ten kod demonstruje, że
ListaLiczb
akceptuje tylko liczby, podczas gdyLista
akceptuje dowolne typy.
Podsumowanie: Ten przykład pokazuje podstawy dziedziczenia w PHP oraz jak ograniczyć typy danych przyjmowane przez metody w klasach potomnych, wykorzystując typy sparametryzowane (choć w PHP nie są one tak zaawansowane jak w innych językach). Zachęcamy do dalszego zgłębiania tematu programowania obiektowego w PHP!