logo

Java пакети

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

Изход:

OutputJavaPackages' title=Работеща програма с път на папка

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

Това е визуалното представяне на персонализиран пакет в Java в изображението по-долу. Първо създаваме папка с име Progamming и вътре в нея създаваме пакет Javaprogramming и след това създаваме друг подпакет, който се нарича масиви . След това създаваме файл с клас Java в него, който е показан на изображението по-долу:

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

Структура на директорията: Имената на пакетите и структурите на директории са тясно свързани. Например, ако името на пакета е 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, но не включва под-пакети.

Пример: Импортирайте векторния клас

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;

импортиране на 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 вътре в директорията, като първият израз е имената на пакетите.

Пример:

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


2. Използвайте класа в програмата:

Сега ще използваме MyClass клас в нашата програма.

как да изтеглите видеоклипове от youtube vlc
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();

многоредов коментар 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

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модификатор са достъпни отвсякъде, независимо дали класът за достъп е в същия пакет или не .
  • Защитено: Членовете със защитения модификатор са достъпни в рамките на същия пакет В подкласове
  • По подразбиране: Членовете без модификатор са достъпни само в рамките на същия пакет
  • Частно: Членове сprivateмодификатор са достъпни само в рамките на същия клас. Те не могат да бъдат достъпни от класове в същите подкласове на пакет или различни пакети.