Можно ли объявить в абстрактном классе абстрактное свойство (в PHP)? Доброго времени суток. Недавно на собеседовании столкнулся с вопросом, который мне до сих пор не даёт покоя. Вопрос звучал так: "Можно ли в абстрактном классе объявить абстрактное свойство и если нет, то почему?". Подсознательно понимаю, что нельзя, т.к. это не правильно (наверное). Но не уверен в этом и не могу сформулировать, почему нельзя. Есть у кого какие мысли по этому поводу? Можно ли, и если нельзя, то почему? =)
В PHP нельзя объявить абстрактное свойство в абстрактном классе. При объявлении абстрактного свойства в абстрактном классе возникает ошибка, так как абстрактные свойства не поддерживаются в PHP.
Абстрактный класс может содержать только абстрактные методы, которые должны быть реализованы в дочерних классах. Свойства должны быть объявлены в классе напрямую или через методы (геттеры и сеттеры).
Поэтому, если вам необходимо определить обязательное свойство в дочернем классе, можно объявить абстрактный метод для доступа к этому свойству, но не само свойство.
В PHP нельзя объявить абстрактное свойство в абстрактном классе. При объявлении абстрактного свойства в абстрактном классе возникает ошибка, так как абстрактные свойства не поддерживаются в PHP.
Абстрактный класс может содержать только абстрактные методы, которые должны быть реализованы в дочерних классах. Свойства должны быть объявлены в классе напрямую или через методы (геттеры и сеттеры).
Поэтому, если вам необходимо определить обязательное свойство в дочернем классе, можно объявить абстрактный метод для доступа к этому свойству, но не само свойство.