#7.14 php Доступ к методам базового класса

При использовании наследования может возникнуть необходимость вызова перекрытого метода базового класса. Например, пусть метод 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> 

Результат выполнения примера;



Рис. 1. Доступ к перекрытым методам базового класса

Использование оператора :: позволяет задать имя базового класса непосредственно, но зачастую требуется сослаться на метод непосредственного предка данного класса. Для этой цели в PHP предусмотрено ключевое слово parent, которое может быть использовано вместо имени базового класса. С его использованием вызов метода set_name выглядит следующим образом: parent::set_name($text).

vedro-compota's picture

необходимость вызова перекрытого метода базового

-- нужна ссылка на ранее разобранный термин "перекрытости", там должен быть пример

_____________
матфак вгу и остальная классика =)