Правила
public → доступен отовсюду
protected → доступен только в классе и наследниках
private → доступен только в самом классе. Private не наследуется.
В чём идея?
ООП – это контроль доступа к состоянию.
Если всё public, у тебя нет инкапсуляции. Любой код может менять внутреннее состояние как хочет. Это хаос.
Правильная модель:
- Protected для расширяемой архитектуры
- Свойства почти всегда private
- Доступ к ним через public методы