#7.14 php Доступ к методам базового класса
Primary tabs
При использовании наследования может возникнуть необходимость вызова перекрытого метода базового класса. Например, пусть метод set_name
в классе Animal
описан следующим образом:
function set_name($text) { $this->name = $text; }
Одноименный метод в порожденном классе Lion
может вызвать этот метод при помощи префикса Animal::
, содержащего имя базового класса. Соответствующее описание выглядит следующим образом:
function set_name($text) { Animal::set_name(mp_strtoupper($text)); }
Пример 1 использует этот прием.
Пример 1. Вызов перекрытого метода
<HTML> <HEAD> <TITLE>Доступ к методам базового класса</TITLE> </HEAD> <BODY> <CENTER> <H1> Доступ к методам базового класса </H1> <?php class Animal { protected $name; public function set_name($text) { $this->name = $text; } public function get_name() { return $this->name; } } class Lion extends Animal { public function roar() { echo $this->name, " рычит! <BR>"; } public function set_name($text) { Animal::set_name(mb_strtoupper($text)); } } echo "Создание нового льва...<BR>"; $lion = new Lion(); $lion->set_name("Бонифаций"); echo $lion->roar(); ?> </CENTER> </BODY> </HTML>
Результат выполнения примера;
Использование оператора ::
позволяет задать имя базового класса непосредственно, но зачастую требуется сослаться на метод непосредственного предка данного класса. Для этой цели в PHP предусмотрено ключевое слово parent
, которое может быть использовано вместо имени базового класса. С его использованием вызов метода set_name
выглядит следующим образом: parent::set_name($text)
.
- Log in to post comments
- 677 reads
vedro-compota
Wed, 09/13/2023 - 19:31
Permalink
необходимость вызова
-- нужна ссылка на ранее разобранный термин "перекрытости", там должен быть пример
_____________
матфак вгу и остальная классика =)