Пакеты

В предшествующих главах для всех примеров классов мы использовали имена из одного пространства имен. Это означает, что во избежание конфликта имен для каждого класса нужно было указывать уникальное имя. По истечении некоторого времени при отсутствии какого-либо способа управления пространством имен может возникнуть ситуация, когда выбор удобных описательных имен отдельных классов станет затруднительным. Кроме того, требуется также какой-нибудь способ обеспечения того, чтобы выбранное имя класса было достаточно уникальным и не конфликтовало с именами классов, выбранными другими программистами. (Представьте себе небольшую группу программистов, спорящих о том, кто имеет право использовать имя "Foobar" в качестве имени класса. Или вообразите себе все сообщество Internet, спорящее о том, кто первым назвал класс "Espresso".) К счастью, Java предоставляет механизм разбиения пространства имен на более удобные для управления фрагменты. Этим механизмом служит пакет. Пакет служит одновременно механизмом и присвоения имен, и управления видимостью.

Внутри пакета можно определить классы, не доступные коду вне этого пакета. Можно также определить члены класса, которые видны только другим членам этого же пакета. Такой механизм позволяет классам располагать полными сведениями друг о друге, но не предоставлять эти сведения остальному миру.