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 $elementoznacza, że klasa może przyjmować dowolny typ danych. - Krok 2: Tworzenie klasy
ListaLiczbdziedziczącej poListaz ograniczeniem typu.Klasa
ListaLiczbdziedziczy poLista, ale metodadodajprzyjmuje 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
ListaLiczbakceptuje tylko liczby, podczas gdyListaakceptuje 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!