Ответ 1
Если у меня есть класс java, который является закрытым пакетом (объявлен с классом, а не "открытый класс" ), нет никакой разницы, если методы внутри объявлены общедоступными или защищенными или частными пакетами, правильно?
Ну, может быть, не сразу. Но если вы (или в будущем) объявите "защищенный" или "общедоступный" класс, который наследуется из класса private-private, то видимость членов исходного класса do имеет значение.
Как указывает @kmccoy, объявление класса как окончательного исключает возможность подклассов.
Но это действительно только окошко. Если вы затем решите, что вам действительно нужно создавать подклассы, вы просто удаляете final
... и затем возвращаетесь в ситуацию, когда выбор модификаторов доступа имеет значение.
IMO, суть в том, что вы должны выбрать наиболее подходящие модификаторы... даже если это не нужно прямо сейчас. Если ничего другого, ваш выбор модификаторов должен документировать ваше намерение относительно того, где лежат границы абстракции.