Пакети в Java — це механізм, який інкапсулює групу підпакетів класів та інтерфейсів. Пакети використовуються для:
- Запобігайте конфліктам імен, дозволивши класам з однаковою назвою існувати в різних пакетах, наприклад college.staff.cse.Employee та college.staff.ee.Employee.
- Полегшіть організацію пошуку та використання інтерфейсів класів та інших компонентів.
- Забезпечте контрольований доступ для захищених членів, які доступні в одному пакеті та підкласами. Члени за замовчуванням (без специфікатора доступу) доступні лише в одному пакеті.
Групуючи пов’язані класи в пакети, Java сприяє інкапсуляції даних, роблячи код придатним для повторного використання та легшим для керування. Просто імпортуйте потрібний клас із пакета, щоб використовувати його у своїй програмі.
Створення спеціальних пакетів
крок 1: Створіть каталог, у якому ми створимо наші пакети та файли Java.
mkdir ПРОГРАМУВАННЯ
підключити базу даних java
Крок 2: Тепер змініть каталог і створіть іншу папку всередині основної папки
ПРОГРАМУВАННЯ cd
mkdir Програмування Java
cd JavaПрограмування
масиви mkdir
крок 3: Тепер створіть порожній текстовий файл і напишіть наведений нижче код Java і не забудьте зберегти його з тим же ім’ям, що й клас із розширенням .java (TwoPointers.java)
Клас TwoPointers.
Javapackage JavaProgramming.arrays; // Main class present inside the package public class TwoPointers { public static void main(String[] args) { System.out.println('Inside the package'); } }
Примітка: Не забудьте додати назву пакета в програмний файл.
крок 4: Тепер запустіть програму, вказавши шлях до папки
javac srcJavaProgrammingarraysTwoPointers.java
java srcJavaProgrammingarraysTwoPointers.java
Вихід:
Запущена програма зі шляхом до папкиСтруктура папки:
Це візуальне представлення спеціального пакета в Java на зображенні нижче. Спочатку ми створюємо папку з назвою Progamming і всередині неї створюємо пакет Javaprogramming, а потім створюємо ще один підпакет під назвою масиви . Потім ми створюємо всередині нього файл класу Java, який показано на зображенні нижче:
Структура папкиРобота пакетів Java
Структура каталогу: Імена пакетів і структури каталогів тісно пов’язані. Наприклад, якщо ім’я пакета — college.staff.cse, тоді три каталоги — це співробітники коледжу та cse, де cse — це співробітники, а персонал — коледж.
Правила іменування : назви пакетів записуються в порядку, зворотному до доменних імен, напр. org.geeksforgeeks.practice. У коледжі конвенція може бути:
- college.tech.cse
- college.tech.ee
- коледж.мист.істор
приклад:
імпорт java.util.*;
Тут util — це підпакет, створений усередині пакета java.
Доступ до класів у пакеті
У Java ми можемо імпортувати класи з пакету за допомогою одного з наступних методів:
1. Імпорт певного класу :
імпорт java.util.Vector;
Це імпортує лише клас Vector з пакета java.util.
кордон css
2. Імпортувати всі класи з пакета :
імпорт java.util.*;
Це імпортує всі класи та інтерфейси з пакета java.util, але не включає підпакети.
приклад: Імпортуйте клас Vector
Javaimport java.util.Vector; public class Geeks { public Geeks() { // java.util.Vector is imported We are able to access it directly in our code. Vector v = new Vector(); java.util.ArrayList l = new java.util.ArrayList(); l.add(3); l.add(5); l.add(7); System.out.println(l); } public static void main(String[] args) { new Geeks(); } }
Вихід
[3 5 7]
Примітка:
- Використання пакету імпорту.*; імпортує всі класи в пакеті, але не класи з його підпакетів.
- Якщо два пакунки мають класи з однаковою назвою (наприклад, java.util.Date і my.package.Date), використовуйте повну назву, щоб уникнути конфліктів:
імпорт java.util.Date;
import my.package.Date;
Типи пакетів Java
- Вбудовані пакети
- Визначені користувачем пакети
1. Вбудовані пакети
Ці пакети складаються з великої кількості класів, які є частиною Java API Деякі з часто використовуваних вбудованих пакетів:
- java.lang : Містить класи підтримки мови (наприклад, класи, які визначають математичні операції простих типів даних). Цей пакет імпортується автоматично.
- java.io: Містить класи для підтримки операцій введення/виведення.
- java.util : Містить службові класи, які реалізують такі структури даних, як словник пов’язаного списку та підтримку; для операцій дати/часу.
- java.applet: Містить класи для створення аплетів.
- java.aut: Містить класи для реалізації компонентів для графічного інтерфейсу користувача (наприклад, кнопки, меню тощо). 6)
- java.net: Містить класи для підтримки мережевих операцій.
2. Визначені користувачем пакети
Це пакети, які визначає користувач.
1. Створіть пакет:
Спочатку ми створюємо каталог myPackage (ім’я має збігатися з ім’ям пакета). Потім створіть MyClass у каталозі, першим іменем якого є імена пакетів.
приклад:
Javapackage myPackage; public class MyClass { public void getNames(String s) { System.out.println(s); } }
2. Використовуйте клас у програмі:
Тепер ми будемо використовувати МійКлас класу в нашій програмі.
mvc у рамках SpringJava
import myPackage.MyClass; public class Geeks { public static void main(String args[]) { // Initializing the String variable with a value String s = 'GeeksforGeeks'; // Creating an instance of class MyClass in the package. MyClass o = new MyClass(); o.getNames(s); } }
Примітка: MyClass.java має бути збережений у каталозі myPackage, оскільки він є частиною пакета.
Статичний імпорт в Java
Статичний імпорт у Java спрощує доступ до статичних членів і відокремлює його від ширшого обговорення пакетів, визначених користувачем.
Статичний імпорт це функція, представлена в мові програмування Java (версії 5 і вище), яка дозволяє членам (полям і методам), визначеним у класі, як публічні статичний для використання в коді Java без вказівки класу, у якому визначено поле.
приклад:
Javaimport static java.lang.System.*; class Geeks { public static void main(String args[]) { // We don't need to use 'System.out' as imported using static. out.println('GeeksforGeeks'); } }
Вихід
GeeksforGeeks
Обробка конфліктів імен
Якщо два пакунки містять клас з однаковою назвою (наприклад, java.util.Date і java.sql.Date), укажіть повну назву пакунка, щоб уникнути конфліктів.
імпорт java.util.*;
імпорт java.sql.*;
//А потім скористайтеся класом Date, тоді ми отримаємо помилку під час компіляції:
Сьогоднішня дата; //ПОМИЛКА-- java.util.Date чи java.sql.Date?
Компілятор не зможе визначити, який клас Date нам потрібен. Цю проблему можна вирішити за допомогою спеціального оператора імпорту:
імпорт java.util.Date;
імпорт java.sql.*;
Якщо нам потрібні обидва класи Date, тоді нам потрібно використовувати повну назву пакета кожного разу, коли ми оголошуємо новий об’єкт цього класу. Наприклад:
java.util.Date deadLine = новий java.util.Date();
java.sql.Date сьогодні = новий java.sql.Date();javafx
Структура каталогу та CLASSPATH
Імена пакетів відповідають структурі каталогу. Наприклад, клас Circle у пакеті com.zzz.project1.subproject2 зберігається як:
$BASE_DIR/com/zzz/project1/subproject2/Circle.class
- тут $BASE_DIR представляє базовий каталог пакета.
- «Точка» в назві пакета відповідає підкаталогу файлової системи.
- Базовий каталог ( $BASE_DIR ) можуть бути розташовані будь-де у файловій системі.
- Отже, компілятор Java і середовище виконання повинні бути проінформовані про розташування $BASE_DIR, щоб знайти класи.
- Це виконується змінною середовища під назвою CLASSPATH .
- CLASSPATH подібна до іншої змінної середовища PATH, яка використовується командною оболонкою для пошуку виконуваних програм.
Налаштування CLASSPATH
CLASSPATH можна встановити одним із таких способів:
- CLASSPATH можна постійно встановити в середовищі кроків у Windows
Перейдіть до Панелі керування -> Система -> Додатково -> Змінні середовища.
- Виберіть «Системні змінні», щоб застосувати шлях до класів для всіх користувачів системи.
- Виберіть «Змінні користувача», щоб застосувати їх лише для користувача, який наразі ввійшов у систему.
- Редагувати або створити CLASSPATH: якщо CLASSPATH уже існує, виберіть його та натисніть «Редагувати», або, якщо він не існує, натисніть «Новий»
- Введіть деталі CLASSPATH: у полі «Ім’я змінної» введіть: «CLASSPATH» У полі «Значення змінної» введіть каталоги та файли JAR, розділені крапкою з комою.
- У полі «Значення змінної» введіть каталоги та файли JAR, розділивши їх крапкою з комою. приклад:
.c:javaprojectclasses;d:tomcatlibservlet-api.jar
- крапка (
.) представляє поточний робочий каталог. - Щоб перевірити поточне налаштування CLASSPATH, виконайте таку команду:
> SET CLASSPATH
CLASSPATH можна тимчасово встановити для конкретного сеансу оболонки CMD, виконавши таку команду:
> SET CLASSPATH=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar
Замість використання змінної середовища CLASSPATH ви також можете використовувати параметр командного рядка -classpath або -cp команд javac і java, наприклад
> java –classpath c:javaprojectclasses com.abc.project1.subproject2.MyClass3
Ілюстрація визначених користувачем пакетів: Створення нашого першого пакета: ім’я файлу – ClassOne.java
Javapackage package_name; public class ClassOne { public void methodClassOne() { System.out.println('Hello there its ClassOne'); } }
Створення нашого другого пакета: ім’я файлу – ClassTwo.java
Javapackage package_one; public class ClassTwo { public void methodClassTwo() { System.out.println('Hello there i am ClassTwo'); } }
Використання обох створених пакетів: Ім’я файлу – Testing.java
Javaimport package_name.ClassOne; import package_one.ClassTwo; public class Testing { public static void main(String[] args) { ClassTwo a = new ClassTwo(); ClassOne b = new ClassOne(); a.methodClassTwo(); b.methodClassOne(); } }
Тепер поглянемо на структуру каталогів пакетів і файлу тестового класу:

Модифікатори доступу в контексті пакетів
- Публічний: Учасники з
publicмодифікатор доступний з будь-якого місця, незалежно від того, чи є клас, що отримує доступ, у тому самому пакеті чи ні . - Захищено: Члени з модифікатором protected доступні в межах одного пакета в підкласах
- За замовчуванням: Члени без модифікатора доступні лише в одному пакеті
- Приватний: Учасники з
privateмодифікатор доступний лише в межах одного класу. До них не можуть отримати доступ класи в одному підкласі пакета або різні пакети.