@vrazbros

Почему в данном PHP коде не наследутся public метод?

Разбираюсь с ООП наткнулся на такой код вроде просто но не могу понять
<?php
abstract class base {
    public function inherited() {
        $this->overridden();
    }
    private function overridden() {
        echo 'base';
    }
}

class child extends base {
    private function overridden() {
        echo 'child';
    }
}

$test = new child();
$test->inherited();
?>

Output will be "base".


не могу понять почему base выводит ? Дочерний класс ведь унаследовал паблик метод inherited значит он должен был вызывать приватный метод overridden из класса child и вывести child
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Наследуется - не значит "копируется". Просто при вызове $test->inherited() в классе child функция не будет найдена и будет попытка вызова функции из родительского класса base.
Ну а класс base, как уже написал Лентюй, не видит overriden() из child, поскольку она приватная.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AlexSer
Она у тебя приватная, может вызываться только внутри своего класса!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы