6. Пакети

Джава дозволяє групувати класи в своєрідні колекції, які називаються пакетами. Це дозволяє, зокрема розмежувати класи з одним і тим же ім’ям. Так якщо ви розробили клас car, то цілком логічно, що такий клас вже не раз розробляли.

Стандартна бібліотека Java поширюється з набором пакетів. Наприклад, java.lang, java.util, java.net і т.п. Все що необхідно для створення пакету, це створити звичайну папку і в ній розмістити ваші класи. Якщо папка вкладена в іншу утворюється ієрархія класів. Так всі стандартні класи Джава розміщені в каталогах java таjavax.

Розробники Джава рекомендують розміщувати пакети по принципу доменних імен, лише в зворотньому порядку, наприклад: com.horstmann.corejava. Якщо ви або ваша фірма має доменне ім’я – це доволі зручний спосіб розміщення, оскільки забезпечує унікальність найменування пакету.

Імпортування пакетів

Ваш клас може використовувати класи з власного пакету або всі відкриті класи з іншого пакету. Проте, якщо класи знаходяться в іншому пакеті, їх потрібно імпортувати. Це можна зробити двома способами:

1) вказувати повну назву пакету перед використовуваним класом:

1
2
java.util.Date today = 
new java.util.Date();

2) використати інструкцію import, яка ставиться на початку сирцевого коду програми.

1
2
import java.util.Date; 
// імпортуємо класс

Можна також імпортувати цілий пакет, таким чином не лише класс Date буде доступний, але й усі класи, які знаходять в одному каталозі з ним:

1
2
import java.util.*;
Date today = new Date();

Щоб визначити, який пакет вам потрібно імпортувати можна скористатися документацією класів. Деякі середовища розробки дозволяють зробити це автоматизовано при натисненні певного пункту меню. В NetBeans наприклад можна клацнути правою кнопкою миші будь-де у вікні редагування коду і вибрати пункт “Fix Import”. Щоправда дана команда також підчищає рядки з імпортом і забирає імпорт тих пакетів, які не використовуються.

Інколи все ж коли ви імпортуєте пакет не вказуючи ім'я класу, то можуть виникати конфлікти імен. В таких випадках необхідно, або точно вказати, який клас ви імпортуєте, або якщо вам необхідно використовувати однойменні класи з двох різних пакетів, то прийдеться використовувати повне ім'я пакету при роботі з класом та його методами.