Podręcznik PHP
Poprzedni
Rozdział 14.
Klasy i Obiekty
Następny
extends
Bardzo często zachodzi potrzeba stworzenia klasy o funkcjach i zmiennych podobnych do już istniejącej klasy.
Zasadniczo dobrze jest stworzyć szablonową klasę, która może być użyta we wszystkich twoich projektach i przystosowywać ją do specyficznych potrzeb twojego projektu.
Aby ułatwić ten proces, klasy mogą być rozszerzeniami innych klas.
Rozszerzone, lub mówiąc inaczej 'dziedziczone', klasy mają wszystkie zmienne i funkcje klasy podstawowej (nazywa się to dziedziczeniem, mimo że nikt nie umarł) oraz to co do niej dodałeś w definicji rozszerzenia.
Nie można odjąć pewnych rzeczy z klasy podstawowej, czyli oddefiniować istniejących w klasie podstawowej funkcji i zmiennych.
Rozszerzona klasa jest zawsze zależna od jednej klasy bazowej - dziedziczenie wielokrotne nie jest obsługiwane.
Klasy można rozszerzyć używając słowa kluczowego 'extends'.
class Nazwany_Koszyk extends Koszyk {var $wlasciciel; function ustaw_wlasciciela ($nazwa) {$this - wlasciciel = $nazwa;}}
Definiuje to klasę Nazwany_Koszyk, który ma wszystkie zmienne i funkcje klasy Koszyk plus dodatkowa zmienna $wlasciciel i dodatkowa funkcja ustaw_wlasciciela().
Nazwany koszyk tworzy się normalnym sposobem.
Możesz teraz ustawiać i pobierać nazwę właściciela koszyka.
Cały czas możesz używać zwykłych funkcji koszyka dla nazwanego koszyka:
$nkoszyk = new Nazwany_Koszyk; / / Stwórz nazwany koszyk $nkoszyk - ustaw_wlasciciela("kris"); / / Nazwij koszyk print $nkoszyk - wlasciciel; / / Wyświetl właściciela koszyka $nkoszyk - dodaj_przedmiot("10", 1); / / (funkcjonalność odziedziczona z / / koszyka)
Taka relacja nazywana jest często relacją "rodzic-potomek".
Tworzysz klasę - rodzica - i używasz extends aby stworzyć klasę opartą o klasę rodzica: klasę potomną.
Możesz także tworzyć nowe klasy potomne oparte o tą klasę potomną.
Notatka:
Klasy musza być zdefiniowane zanim zostaną użyte!
Jeśli chcesz, aby klasa Nazwany_Koszyk rozszerzała klasę Koszyk, musisz zdefiniować klasę Koszyk jako pierwszą.
Jeśli chcesz stworzyć kolejną klasę nazwaną Niebieski_Nazwany_Koszyk opartą o klasę Nazwany_Koszyk, musisz najpierw zdefiniować klasę Nazwany_Koszyk.
W skrócie: kolejność, w jakiej klasy są definiowane, jest bardzo ważna.
Poprzedni
Spis treści
Następny
Klasy i Obiekty
Początek rozdziału
Konstruktory