Я искал, и я знаю теоретическую разницу.
- public. Любой класс/функция может получить доступ к методу/свойству.
- protected. Только этот класс и любые подклассы могут получить доступ к методу/свойству.
- private. Только этот класс может получить доступ к методу/свойству. Он даже не будет унаследован.
Что все хорошо и хорошо, вопрос в том, какова практическая разница между ними? Когда вы будете использовать private
и когда вы будете использовать protected
? Существует ли стандартная или приемлемая хорошая практика над этим?
До сих пор, чтобы сохранить концепцию наследования и полиморфизма, я использую public
для чего-либо, к которому следует обращаться извне (например, конструкторы и функции основного класса), и protected
для внутренних методов (логика, помощник методы и т.д.). Я на правильном пути?
(Обратите внимание, что этот вопрос для меня, но и для будущей справки, поскольку я не видел такого вопроса, как этот SO).