Почему при обращении к private свойству родителя не происходит ошибки? Здравствуйте! Есть следующий код: class Foo { public $a; protected $b; private $c; } class Bar extends Foo { } $foo = new Foo(); $foo->a = 'a'; //$foo->b = 'b'; //ОШИБКА, так как происходит обращение к protected свойству //$foo->c = 'c'; //ОШИБКА, так как происходит обращение к private свойству $bar = new Bar(); $bar->a = 'a'; //$bar->b = 'b'; //ОШИБКА, так как происходит обращение к protected свойству $bar->c = 'c'; //здесть нет ошибки, хотя происходит обращение к свойству private var_dump объекта 1: object(Foo)#1 (3) { ["a"]=> string(1) "a" ["b":protected]=> NULL ["c":"Foo":private]=> NULL } var_dump объекта 2: object(Bar)#2 (4) { ["a"]=> string(1) "a" ["b":protected]=> NULL ["c":"Foo":private]=> NULL ["c"]=> string(1) "c" } Почему при обращении к private свойству родителя не происходит ошибки, а вместо этого создается еще одно свойство?

8 Мая 2022 в 19:52
262 +1
0
Ответы
1

При обращении к private свойству родителя из класса-наследника происходит создание нового private свойства в классе-наследнике, а не прямое обращение к private свойству родителя. Это связано с тем, что private свойства доступны только внутри класса, в котором они были объявлены, и не могут быть доступны в классах-наследниках напрямую.

Поэтому при обращении к private свойству родителя из класса-наследника происходит создание нового private свойства в классе-наследнике со значением, переданным при обращении. В данном случае, когда мы обращаемся к private свойству $c класса Foo из объекта $bar класса Bar, создается новое private свойство $c в классе Bar со значением 'c'.

Поэтому нет ошибки при обращении к private свойству родителя, и новое private свойство создается в классе-наследнике.

16 Апр в 18:36
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 91 947 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир