«И затем обновлять его до защищенного, если это нужно подклассу, или публичного, если это нужно другому классу?»
Это неправильный подход. Во время разработки вы должны знать, какой публичный доступ вы хотите предоставить. Обычно вы предоставляете публичный доступ, потому что это и есть цель вашего класса. И вы предоставляете защищенный доступ, потому что вы хотите, чтобы подклассы обращались к вещам. И вы используете личное для вещей, которые не являются ничьим делом.
Теперь, если кому-то нужен доступ к вещам, к которым у него нет доступа, тогда вам следует серьезно задуматься об этой необходимости . Им не нужен этот доступ, иначе ваш дизайн неправильный. Может быть , ваш дизайн является неправильным, и что - то не является публичным , которые должны быть открытыми, чтобы вы изменить. Но если ваш дизайн верен, то с необходимостью что-то не так, поэтому вы исправите это, а не повредите свой дизайн.