Это все о инкапсуляции (или, как сказал Джо Филлипс, минимум знаний ).
Начните с самого ограничительного (частного) и посмотрите, не понадобятся ли вам в будущем менее ограничительные модификаторы.
Мы все используем модификаторы методов и членов, такие как private, public, ... но мало кто из разработчиков делает это, используя пакеты для организации кода логически.
Например:
Вы можете поместить чувствительные методы безопасности в пакет «security».
Затем поместите открытый класс, который обращается к некоторому коду, связанному с безопасностью, в этом пакете, но оставьте другие классы безопасности закрытым .
Таким образом, другие разработчики смогут использовать общедоступный класс только из-за пределов этого пакета (если они не изменят модификатор).
Это не функция безопасности, но она поможет использовать.
Outside world -> Package (SecurityEntryClass ---> Package private classes)
Другое дело, что классы, которые сильно зависят друг от друга, могут оказаться в одном и том же пакете и в конечном итоге могут быть реорганизованы или объединены, если зависимость слишком сильна.
Если, наоборот, вы установите все как public , не будет понятно, к чему следует или не нужно обращаться, что может привести к написанию большого количества javadoc (который ничего не применяет через компилятор. ..).