Допустимо ли повторно объявлять или переопределять переменную экземпляра через наследование? - PullRequest
0 голосов
/ 04 января 2010

У меня есть абстрактный ParentClass с protected $instanceVariable. Теперь есть ChildClass, который также имеет private $instanceVariable. Это устанавливает это к начальному значению, как:

private $instanceVariable = 5;

Таким образом, дочерний класс переопределяет его и изменяет видимость на частный. Родительский класс не присваивает значение этой переменной экземпляра. Он также объявлен в родительском классе, потому что есть методы, которые обращаются к нему.

Это нормально с PHP?

Ответы [ 2 ]

1 голос
/ 04 января 2010

php не позволит вам объявить такого участника, вы получите сообщение об ошибке:

Access level to d::$x must be protected (as in class c) or weaker
1 голос
/ 04 января 2010

Вы нарушаете принцип подстановки Лискова - я должен иметь возможность наследовать от безопасного класса ChildClass, зная, что мой класс GrandChild может обрабатывать ChildClass, как если бы он был ParentClass. То есть GrandChild должен иметь доступ к защищенной переменной $ instanceVariable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...