Вы говорите о частной защите пакетов в Java? Это защита, которая действует по умолчанию для членов класса. Иногда полезно, если у вас есть классы, которые тесно взаимодействуют таким образом, что для их отображения требуется дополнительная информация или методы.
Скажем, у вас есть класс Sink, и несколько классов могут писать в него. У Sink есть открытый метод, который принимает основные типы данных, и закрытый метод пакета, который принимает необработанные байтовые массивы. Вы не хотите делать этот метод общедоступным, потому что считаете его слишком низкоуровневым для своих пользователей, но вы хотите, чтобы другие классы (в пакете Sink) записывали его в этот Sink. Таким образом, вы делаете метод, принимающий пакет байтового массива, закрытым, и классы вашего пакета, такие как ByteStreamSource, могут его использовать. Теперь ваша защита выглядит так:
User Code using the package User
------ | -----------------------------|----- package public Interface
| |
Sink <- package priv. iface -> Sources
Закрытый интерфейс пакета ортогонален общедоступному интерфейсу, установленному общедоступными методами. Приватность пакетов увеличивает инкапсуляцию, потому что это поощряет вас , а не , публиковать то, что не должно быть публичным. Это похоже на ключевое слово friend
в C ++ и ключевое слово internal
в C #.