logo

Јава пакети

Пакети у Јави су механизам који инкапсулира групу подпакета и интерфејса класа. Пакети се користе за:

  • Спречите конфликте у именовању тако што ћете дозволити да класе са истим именом постоје у различитим пакетима као што су цоллеге.стафф.цсе.Емплоиее и цоллеге.стафф.ее.Емплоиее.
  • Олакшајте организовање лоцирања и коришћења интерфејса класа и других компоненти.
  • Обезбедите контролисан приступ за заштићене чланове који су доступни у оквиру истог пакета и по подкласама. Подразумевани чланови (без спецификације приступа) су доступни само у оквиру истог пакета.

Груписањем повезаних класа у пакете Јава промовише енкапсулацију података чинећи код вишекратну употребу и лакшим за управљање. Једноставно увезите жељену класу из пакета да бисте је користили у свом програму.



Креирање прилагођених пакета

1. корак: Направите директоријум у коме креирамо наше пакете и Јава датотеке.

мкдир ПРОГРАМИРАЊЕ

обрнути низ у Јави

2. корак: Сада промените директоријум и креирајте другу фасциклу унутар главне фасцикле



цд ПРОГРАМИРАЊЕ
мкдир ЈаваПрограмминг
цд ЈаваПрограмминг
мкдир низови

Корак 3: Сада направите празну текстуалну датотеку и напишите доњи Јава код и не заборавите да га сачувате под истим именом као и класа са екстензијом .јава (ТвоПоинтерс.јава)

ТвоПоинтерс Цласс.



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. корак: Сада покрените програм са дефинисаном путањом фасцикле

јавац срцЈаваПрограммингарраисТвоПоинтерс.јава

јава срцЈаваПрограммингарраисТвоПоинтерс.јава

Излаз:

ОутпутЈаваПацкагес' title=Покретање програма са путањом до фасцикле

Структура фолдера:

Ово је визуелни приказ прилагођеног пакета у Јави на слици испод. Прво креирамо фасциклу под називом Прогамминг и унутар ње креирамо пакет Јавапрограмминг, а затим креирамо други потпакет који се зове низови . Затим креирамо датотеку Јава класе унутар ње која је приказана на слици испод:

ПацкагеИнЈава1' loading='lazy' title=Структура фолдера

Рад Јава пакета

Структура именика: Имена пакета и структуре директоријума су уско повезани. На пример, ако је име пакета колеџ.стафф.цсе, онда су три директоријума особље колеџа и цсе где је цсе унутар особља, а особље унутар колеџа.

Конвенције о именовању : Имена пакета се пишу обрнутим редоследом од имена домена, нпр. орг.геексфоргеекс.працтице. На колеџу конвенција може бити:

  • цоллеге.тецх.цсе
  • цоллеге.тецх.ее
  • колеџ.уметност.историја

Пример:

кнн алгоритам

импорт јава.утил.*;

Овде утил је потпакет креиран унутар јава пакета.  

Приступање класама унутар пакета

У Јави можемо да увеземо класе из пакета користећи било који од следећих метода:

1. Увезите одређену класу :

импорт јава.утил.Вецтор;

Ово увози само класу Вецтор из пакета јава.утил.

2. Увезите све класе из пакета :

импорт јава.утил.*;

Ово увози све класе и интерфејсе из пакета јава.утил, али не укључује подпакете.

Пример: Увезите класу Вецтор

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] 

Напомена:

  • Коришћење пакета за увоз.*; увози све класе у пакету, али не и класе из својих потпакета.
  • Када два пакета имају класе са истим именом (нпр. јава.утил.Дате и ми.пацкаге.Дате) користите потпуно квалификовано име да бисте избегли сукобе:

импорт јава.утил.Дате;

импорт ми.пацкаге.Дате;

шта ово кд значи

Врсте Јава пакета

  • Уграђени пакети
  • Кориснички дефинисани пакети

1. Уграђени пакети

Ови пакети се састоје од великог броја класа које су део Јаве АПИ .Неки од најчешће коришћених уграђених пакета су:

  • јава.ланг : Садржи класе подршке језику (нпр. класе које дефинишу математичке операције примитивних типова података). Овај пакет се аутоматски увози.
  • јава.ио: Садржи класе за подршку улазних/излазних операција.
  • јава.утил : Садржи услужне класе које имплементирају структуре података као што је речник повезаних листа и подршку; за операције датума/времена.
  • јава.апплет: Садржи класе за креирање аплета.
  • јава.аут: Садржи класе за имплементацију компоненти за графичке корисничке интерфејсе (попут дугмета; менија итд.). 6)
  • јава.нет: Садржи класе за подршку мрежним операцијама.

2. Кориснички дефинисани пакети

Ово су пакети које дефинише корисник.

1. Креирајте пакет:

Прво креирамо директоријум миПацкаге (име треба да буде исто као име пакета). Затим креирајте МиЦласс унутар директоријума са првом наредбом имена пакета.

Пример:

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


2. Користите разред у програму:

Сада ћемо користити МиЦласс часа у нашем програму.

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);  } } 


Напомена: МиЦласс.јава мора бити сачувана унутар миПацкаге директоријума пошто је део пакета.  

Статички увоз у Јаву

Статички увоз у Јави се односи на поједностављивање приступа статичним члановима и одваја га од шире расправе о кориснички дефинисаним пакетима.

Статички увоз је функција уведена у програмски језик Јава (верзије 5 и новије) која омогућава члановима (поља и методе) дефинисане у класи као јавне статичне да се користи у Јава коду без навођења класе у којој је поље дефинисано.

Пример:

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 

Руковање сукобима имена

Када два пакета садрже класу са истим именом (нпр. јава.утил.Дате и јава.скл.Дате) наведите пуно име пакета да бисте избегли конфликте.

импорт јава.утил.*;
импорт јава.скл.*;
// И онда користите класу Дате онда ћемо добити грешку у времену компајлирања:
Датум данас ; //ГРЕШКА-- јава.утил.Дате или јава.скл.Дате?

Компајлер неће моћи да схвати коју класу Дате желимо. Овај проблем се може решити коришћењем специфичне изјаве за увоз:

импорт јава.утил.Дате;
импорт јава.скл.*;

Ако су нам потребне обе класе Дате, онда морамо да користимо пуно име пакета сваки пут када декларишемо нови објекат те класе. На пример:

јава.утил.Дате деадЛине = нев јава.утил.Дате();
јава.скл.Дате тодаи = нев јава.скл.Дате();

разлика тигра и лава

Структура именика и ЦЛАССПАТХ

Имена пакета одговарају структури директоријума. На пример, класа Цирцле у пакету цом.ззз.пројецт1.субпројецт2 се чува као:

$БАСЕ_ДИР/цом/ззз/пројецт1/субпројецт2/Цирцле.цласс

  • Ево $БАСЕ_ДИР представља основни директоријум пакета.
  • 'Тачка' у називу пакета одговара поддиректоријуму система датотека.
  • Основни директоријум ( $БАСЕ_ДИР ) може се налазити било где у систему датотека.
  • Стога Јава компајлер и време извођења морају бити обавештени о локацији $БАСЕ_ДИР да би лоцирали класе.
  • То се постиже променљивом окружења која се зове ЦЛАССПАТХ .
  • ЦЛАССПАТХ је сличан другој променљивој окружења ПАТХ коју користи командна шкољка за тражење извршних програма.

Подешавање ЦЛАССПАТХ

ЦЛАССПАТХ се може подесити на било који од следећих начина:

  • ЦЛАССПАТХ се може трајно подесити у окружењу које су кораци у Виндовс-у

Идите на Цонтрол Панел -> Систем -> Адванцед -> Енвиронмент Вариаблес.

  • Изаберите „Систем Вариаблес“ да бисте применили ЦЛАССПАТХ за све кориснике у систему.
  • Изаберите „Корисничке променљиве“ да бисте га применили само на тренутно пријављеног корисника.
  • Уредите или креирајте ЦЛАССПАТХ : Ако ЦЛАССПАТХ већ постоји изаберите га и кликните на 'Измени' или ако не постоји кликните на 'Ново'
  • Унесите детаље о ЦЛАССПАТХ: У поље 'Вариабле наме' унесите: 'ЦЛАССПАТХ' У поље 'Вариабле валуе' унесите директоријуме и ЈАР датотеке одвојене тачком и зарезом.
  • У поље 'Вариабле валуе' унесите директоријуме и ЈАР датотеке раздвојене тачком и зарезом. Пример:

.c:javaprojectclasses;d:tomcatlibservlet-api.jar

  • тачка (.) представља тренутни радни директоријум.
  • Да бисте проверили тренутну поставку ЦЛАССПАТХ, издајте следећу команду:

> СЕТ ЦЛАССПАТХ

ЦЛАССПАТХ се може привремено подесити за ту одређену сесију ЦМД љуске издавањем следеће команде:

> СЕТ ЦЛАССПАТХ=.;ц:јавапројецтцлассес;д:томцатлибсервлет-апи.јар

Уместо да користите променљиву окружења ЦЛАССПАТХ, можете користити и опцију командне линије -цласспатх или -цп јавац и јава команди, на пример

> јава –цласспатх ц:јавапројецтцлассес цом.абц.пројецт1.субпројецт2.МиЦласс3

Илустрација кориснички дефинисаних пакета:  Креирање нашег првог пакета: Име датотеке – ЦлассОне.јава

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

Креирање нашег другог пакета: Име датотеке – ЦлассТво.јава

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

Коришћење оба креирана пакета: Име датотеке – Тестинг.јава

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модификатори су доступни само унутар исте класе. Не могу им приступити класе у истим подкласама пакета или различитим пакетима.