2009-08-29 2 views
10

Если у меня есть класс java, который является закрытым пакетом (объявлен с классом, а не «публичным классом»), нет никакой разницы, если методы внутри объявлены общедоступными или защищенными или частными пакетами, верно? Так что я должен использовать, или когда я должен использовать это? Я немного смущен.Java - Доступность метода внутри пакета - частный класс?

ответ

18

Если у меня есть класс java, который является закрытым пакетом (объявлен с классом, а не «открытый класс»), то нет никакой разницы, если методы внутри объявлены общедоступными или защищенными или частными, правильно?

Ну, может быть, не сразу. Но если вы затем (или в будущем) объявите «защищенный» или «общедоступный» класс, который наследуется от пакета-частного класса, то видимость членов исходного класса составляет.

Как отмечает @kmccoy, объявление класса как окончательного исключает возможность подклассов.

Но это действительно только оконная одежда. Если вы затем решите, что вам действительно нужно создавать подклассы, вы просто удаляете final ... и затем возвращаетесь в ситуацию, когда выбор модификаторов доступа имеет значение.

IMO, в итоге вы должны выбрать наиболее подходящие модификаторы ... даже если это не нужно прямо сейчас. Если ничего другого, ваш выбор модификаторов должен документировать ваше намерение относительно того, где лежат границы абстракции.

+0

Если класс является «окончательным классом SomeClass», то будет ли видимость элемента? – kmccoy

+2

Если последний модификатор удален в будущем в будущем рефакторинге :) Помните, что это программное обеспечение, «final» не означает, что «камень не меняется», это значит, «не может выводить дочерний класс из этого типа, поскольку он написан прямо сейчас." –

4

Публичные методы внутри класса пакета являются общедоступными для классов в одном пакете. Но частные методы не будут доступны классам в одном пакете.

Смежные вопросы