Пакеты в Java

Представьте, что код — это книга, а пакеты — это главы в этой книге. Когда программа становится большой, она начинает напоминать толстую книгу с множеством глав. Пакеты — это способ организовать код, сделав его структурированным и лёгким для понимания.

Зачем нужны пакеты в Java

Пакеты (packages) в Java — это своего рода контейнеры, которые содержат классы. Они помогают разделить файлы с кодом на логические блоки, что особенно важно, когда ведётся работа с большими проектами, в которых классов – уйма.

По сути, физически пакеты представляют собой папки, в которых лежат файлы с расширением .java. Пакеты используются по следующим двум причинам:

  1. Организация файлов с кодом в проекте. Представьте, что у вас есть несколько классов, связанных между собой. Поместив их в один пакет, вы создаете логическую группировку. Например, если вы пишете приложение для управления фотографиями, то логичным будет создать пакет “photo” и поместить туда все классы, относящиеся к работе с фотографиями.
  2. Уникальность имён. Пакеты позволяют избежать конфликтов имён между классами. Если существует несколько классов с одинаковыми именами, скажем, “Utils“, их можно разнести по разным пакетам. Таким образом, это имя уже не будет конфликтовать с другим классом с таким же именем в другом пакете.

Как создать пакет

Допустим, у нас есть класс PhotoEditor, который отвечает за редактирование фотографий. Мы хотим поместить его в пакет “photo, который, в свою очередь, находится в пакете “app. Для этого в начале файла с классом PhotoEditor мы добавляем следующую строку:

Пакеты связаны с папками – иерархия пакетов определяется местоположением в папках. Например, класс PhotoEditor из пакета app.photo будет иметь путь app/photo/PhotoEditor.java. Это объявление пакета и указывает компилятору Java, что класс PhotoEditor должен быть частью пакета “photo“, который находится в пакете “app“.

Как импортировать пакет

Классы, находящиеся в одном пакете, могут обращаться друг к другу без предисловий. Но что, если вы хотите использовать свой класс из другого пакета?

Для использования класса PhotoEditor в пакете “photo“, который в пакете “app“, в другом классе, нужно добавить следующий import:

Если вам нужны все классы из пакетаphoto“, вы можете воспользоваться символом *:

Если не прописать import, тогда к классу придётся обращаться не просто по его имени (PhotoEditor), а с указанием его пакетов через точку:

Это неудобно. Так что import-ы позволяют сделать код более читаемым:

В итоге, пакеты в Java помогают структурировать файлы проекта, относящиеся к разным аспектам приложения. Пакеты позволяют сосуществовать разным классам с одинаковыми именами, но разными областями применения. А import-ы, в свою очередь, избавляют от необходимости писать длинные названия классов с перечислением пакетов через точки. Довольно удобно.

Добавить комментарий