logo

Пакети Java

Пакети в 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.



Java
package 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

Вихід:

OutputJavaPackages' title=Запущена програма зі шляхом до папки

Структура папки:

Це візуальне представлення спеціального пакета в Java на зображенні нижче. Спочатку ми створюємо папку з назвою Progamming і всередині неї створюємо пакет Javaprogramming, а потім створюємо ще один підпакет під назвою масиви . Потім ми створюємо всередині нього файл класу Java, який показано на зображенні нижче:

PackageInJava1' loading='lazy' title=Структура папки

Робота пакетів 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

Java
import 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 у каталозі, першим іменем якого є імена пакетів.

приклад:

Java
package myPackage; public class MyClass {  public void getNames(String s)  {   System.out.println(s);   } } 


2. Використовуйте клас у програмі:

Тепер ми будемо використовувати МійКлас класу в нашій програмі.

mvc у рамках Spring
Java
 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 без вказівки класу, у якому визначено поле.

приклад:

Java
import 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

Java
package package_name; public class ClassOne {  public void methodClassOne()  {  System.out.println('Hello there its ClassOne');  } } 

Створення нашого другого пакета: ім’я файлу – ClassTwo.java

Java
package package_one; public class ClassTwo {  public void methodClassTwo()  {  System.out.println('Hello there i am ClassTwo');  } } 

Використання обох створених пакетів: Ім’я файлу – Testing.java

Java
import 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();  } } 

Тепер поглянемо на структуру каталогів пакетів і файлу тестового класу:

Структура каталогу' loading='lazy' title=

Модифікатори доступу в контексті пакетів

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