CRL
Новичок
Модификаторы доступа в интерфейсах
Аналогичные темы уже поднимались, и неоднократно, однако, читая их я так и не смог прояснить ситуацию относительно модификаторов доступа в интерфейсах. Я понимаю, что методы интерфейса не могут быть private, иначе их нельзя будет реализовать, но я не понимаю, почему они не могут быть protected.
Имеется интерфейс:
Он реализуется классом:
Возникает ошибка: Fatal error: Access type for interface method ICatalogue::showCat() must be omitted
Мануалы на php.net и на данном сайте, рассказывая об интерфейсах, как-то обходят стороной этот вопрос, а у Котерова и Костарева в "РНР5 в подлиннике" относительно интерфейсов сказано: "...интерфейс указывает лишь список методов, их аргументы и модификаторы доступа (обычно только protected и public). Допускается так же описание констант внутри интерфейса." Вопрос возник в связи с тем, что если модификатор доступа в интерфейсе public, то, соответственно, в реализации я не могу сделать его строже, а если не public, то возникает упомянутая ошибка. Как быть?
Аналогичные темы уже поднимались, и неоднократно, однако, читая их я так и не смог прояснить ситуацию относительно модификаторов доступа в интерфейсах. Я понимаю, что методы интерфейса не могут быть private, иначе их нельзя будет реализовать, но я не понимаю, почему они не могут быть protected.
Имеется интерфейс:
PHP:
interface ICatalogue
{
protected function showCat();
}
PHP:
class Lib implements ICatalogue
{
protected function showCat()
{
print "test";
}
}
Мануалы на php.net и на данном сайте, рассказывая об интерфейсах, как-то обходят стороной этот вопрос, а у Котерова и Костарева в "РНР5 в подлиннике" относительно интерфейсов сказано: "...интерфейс указывает лишь список методов, их аргументы и модификаторы доступа (обычно только protected и public). Допускается так же описание констант внутри интерфейса." Вопрос возник в связи с тем, что если модификатор доступа в интерфейсе public, то, соответственно, в реализации я не могу сделать его строже, а если не public, то возникает упомянутая ошибка. Как быть?