Пакетите в Java са механизъм, който капсулира група от класове, подпакети и интерфейси. Пакетите се използват за:
- Предотвратете конфликти при именуване, като позволите на класове с едно и също име да съществуват в различни пакети като college.staff.cse.Employee и college.staff.ee.Employee.
 - Улеснете организирането на локализиране и използване на интерфейси на класове и други компоненти.
 - Осигурете контролиран достъп за защитени членове, които са достъпни в рамките на същия пакет и от подкласове. Членовете по подразбиране (без спецификатор за достъп) са достъпни само в рамките на същия пакет.
 
Чрез групиране на свързани класове в пакети Java насърчава капсулирането на данни, което прави кода повторно използваем и по-лесен за управление. Просто импортирайте желания клас от пакет, за да го използвате във вашата програма.
Създаване на персонализирани пакети
Стъпка 1: Създайте директория, в която създаваме нашите пакети и Java файлове.
mkdir ПРОГРАМИРАНЕ
размери на шрифта в латекс
Стъпка 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
Изход:
Работеща програма с път на папкаСтруктура на папката:
Това е визуалното представяне на персонализиран пакет в Java в изображението по-долу. Първо създаваме папка с име Progamming и вътре в нея създаваме пакет Javaprogramming и след това създаваме друг подпакет, който се нарича масиви . След това създаваме файл с клас Java в него, който е показан на изображението по-долу:
Структура на папкатаСтруктура на директорията: Имената на пакетите и структурите на директории са тясно свързани. Например, ако името на пакета е college.staff.cse, тогава три директории са персонал на колежа и cse, където cse е вътре в персонала, а персоналът е в колежа.
Конвенции за именуване : Имената на пакетите се изписват в обратен ред на имената на домейни, напр. org.geeksforgeeks.practice. В колеж конвенцията може да бъде:
- college.tech.cse
 - college.tech.ee
 - колеж.история на изкуството
 
Пример:
импортиране на java.util.*;
Тук util е подпакет, създаден в пакета java.
Достъп до класове в пакет
В Java можем да импортираме класове от пакет, като използваме един от следните методи:
1. Импортирайте определен клас :
импортиране на java.util.Vector;
Това импортира само векторния клас от пакета java.util.
как да избирате колони от различни таблици в sql
2. Импортирайте всички класове от пакет :
импортиране на java.util.*;
Това импортира всички класове и интерфейси от пакета java.util, но не включва под-пакети.
Пример: Импортирайте векторния клас
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;
импортиране на my.package.Date;
Видове Java пакети
- Вградени пакети
 - Пакети, дефинирани от потребителя
 
1. Вградени пакети
Тези пакети се състоят от голям брой класове, които са част от Java API .Някои от често използваните вградени пакети са:
- java.lang : Съдържа класове за езикова поддръжка (напр. класове, които дефинират математически операции на примитивни типове данни). Този пакет се импортира автоматично.
 - java.io: Съдържа класове за поддръжка на операции за вход/изход.
 - java.util : Съдържа помощни класове, които прилагат структури от данни като Linked List Dictionary и поддръжка; за операции с дата/час.
 - 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. Използвайте класа в програмата:   
Сега ще използваме MyClass клас в нашата програма.
как да изтеглите видеоклипове от youtube vlcJava
 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();многоредов коментар powershell
Структура на директорията и 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: В полето 'Име на променлива' въведете: '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модификатор са достъпни отвсякъде, независимо дали класът за достъп е в същия пакет или не . - Защитено: Членовете със защитения модификатор са достъпни в рамките на същия пакет В подкласове
 - По подразбиране: Членовете без модификатор са достъпни само в рамките на същия пакет
 -     Частно:   Членове с
privateмодификатор са достъпни само в рамките на същия клас. Те не могат да бъдат достъпни от класове в същите подкласове на пакет или различни пакети.