Мамкины ответчики, написавшие про то, что везде должен быть private, умных книжек не читали, кроме сухой теории и что-то своё, судя по всему, не разрабатывали.
Класс почти ВСЕГДА должен иметь protected свойства. Ибо они ничем не отличаются от private, но позволяют использовать свойства в классах-наследниках, которые очень часто возникают. И что бы не переписывать код, лучше всегда использовать protected.
Ситуация, когда действительно нужен private-метод или свойство - очень редкое явление.