нет, я не про утилитарные обработчики, которые не требуют доступа к экземпляру, а методы, которые меняют внутреннее состояние объекта. Плюс ты пишешь код с учетом SRP и DRY, плюс, если у тебя метод на 500 строк - возможно ты делаешь что-то не так.
Разбиваешь метод из 500 строк на 5 по 100, или 10 по 50, или 50 по 10 и зачем давать доступ их использовать пользователю? Чтобы он запутался за какую ручку дергать?
Или метод у тебя в классе реализуют какую-то фундаментальную механику, если такой метод перегрузить или не правильно вызвать в наследнике - все ломается. Можно запретить его перегрузку у наследников и вызов вручную у наследников.