Когда видимость метода стоит установить private, а когда — protected?

Представим, что я проектирую класс. Как мне понять, когда видимость метода должна быть private, а когда — protected? Другими словами, как я могу знать наперед, что другому программисту никогда не потребуется переопределить данный метод?
  • Вопрос задан
  • 2760 просмотров
Решения вопроса 1
Zigmar
@Zigmar
Если явно не надо делать protected (например метод переопределив который, вы позволите пользователю модифицировать поведение) — делайте private. На «всякий случай» делать protected — это по крайней мере странно, это все равно, что на всякий случай делать все public. Вообще, если вы пишете библиотеку, то так-же как вы определяете, что будет публичным интерфейсом (public) а что имплементацией (private), введите еще одну сущность — интерфейс для наследников. С таким делением (интерфейс для всех/интерфейс для наследников/детали имплементации) все должно стать более или менее понятно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
taliban
@taliban
php программист
приват — этот метод нужен только текущему классу и предки не должны в него лезть, он самодостаточен
протектед — дать возможность предкам переопределить/пользоваться напрямую методом
Ответ написан
Комментировать
MarcusAurelius
@MarcusAurelius
автор Impress Application Server для Node.js
Тут уже хорошо ответили, но уточню: разница в зонах видимости/доступности, и это очень зависит от языка. Private — это локальная зона видимости (например, ограниченная юнитом, файлом, модулем, неймспейсом — для разных языков) то есть доступно из кода, составляющего одно логическое целое с этим классом. А Protected — это наоборот, видимость из всех порожденных от него классов, в каких бы файлах, модулях и юнитах они не находились.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы