Я думаю, что полезность открытых, защищенных и закрытых ключевых слов заключается в том, чтобы сделать код более понятным.
Таким образом, вы бы использовали public для API класса, private, чтобы было понятно, как это сделать.НЕ расширяйте класс и не защищайте в любом другом случае.
Обычный прагматический подход никогда не использует private и использует только public или protected.