Допустим, у вас есть абстрактный класс:
abstract class PersonAbstract { private $name = "Stack Overflow"; }
Является ли законным объявлять атрибут как частный в абстрактном классе? Или тот факт, что этот класс должен быть расширен, минимальная видимость защищена ?
Да, вы можете иметь частное поле в абстрактном классе. Однако это поле будет доступно только для функций в этом абстрактном классе. Любые классы, которые наследуют ваш абстрактный класс, не смогут получить доступ к полю.
Вы можете объявить оба поля и функции общедоступными, защищенными или частными в абстрактном классе. Если поле или функция является общедоступной, она доступна для всех. Если он защищен, он доступен только для этого класса и для любых классов, которые наследуются от этого класса. Если он является закрытым, он доступен только для этого класса.
Абстрактные функции должны выполняться наследующим классом, поэтому нет смысла (и, вероятно, не будет работать) иметь частную абстрактную функцию.