Пакети у Јави су механизам који инкапсулира групу подпакета и интерфејса класа. Пакети се користе за:
- Спречите конфликте у именовању тако што ћете дозволити да класе са истим именом постоје у различитим пакетима као што су цоллеге.стафф.цсе.Емплоиее и цоллеге.стафф.ее.Емплоиее.
- Олакшајте организовање лоцирања и коришћења интерфејса класа и других компоненти.
- Обезбедите контролисан приступ за заштићене чланове који су доступни у оквиру истог пакета и по подкласама. Подразумевани чланови (без спецификације приступа) су доступни само у оквиру истог пакета.
Груписањем повезаних класа у пакете Јава промовише енкапсулацију података чинећи код вишекратну употребу и лакшим за управљање. Једноставно увезите жељену класу из пакета да бисте је користили у свом програму.
Креирање прилагођених пакета
1. корак: Направите директоријум у коме креирамо наше пакете и Јава датотеке.
мкдир ПРОГРАМИРАЊЕ
обрнути низ у Јави
2. корак: Сада промените директоријум и креирајте другу фасциклу унутар главне фасцикле
цд ПРОГРАМИРАЊЕ
мкдир ЈаваПрограмминг
цд ЈаваПрограмминг
мкдир низови
Корак 3: Сада направите празну текстуалну датотеку и напишите доњи Јава код и не заборавите да га сачувате под истим именом као и класа са екстензијом .јава (ТвоПоинтерс.јава)
ТвоПоинтерс Цласс.
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. корак: Сада покрените програм са дефинисаном путањом фасцикле
јавац срцЈаваПрограммингарраисТвоПоинтерс.јава
јава срцЈаваПрограммингарраисТвоПоинтерс.јава
Излаз:
Покретање програма са путањом до фасциклеСтруктура фолдера:
Ово је визуелни приказ прилагођеног пакета у Јави на слици испод. Прво креирамо фасциклу под називом Прогамминг и унутар ње креирамо пакет Јавапрограмминг, а затим креирамо други потпакет који се зове низови . Затим креирамо датотеку Јава класе унутар ње која је приказана на слици испод:
Структура фолдераРад Јава пакета
Структура именика: Имена пакета и структуре директоријума су уско повезани. На пример, ако је име пакета колеџ.стафф.цсе, онда су три директоријума особље колеџа и цсе где је цсе унутар особља, а особље унутар колеџа.
Конвенције о именовању : Имена пакета се пишу обрнутим редоследом од имена домена, нпр. орг.геексфоргеекс.працтице. На колеџу конвенција може бити:
- цоллеге.тецх.цсе
- цоллеге.тецх.ее
- колеџ.уметност.историја
Пример:
кнн алгоритам
импорт јава.утил.*;
Овде утил је потпакет креиран унутар јава пакета.
Приступање класама унутар пакета
У Јави можемо да увеземо класе из пакета користећи било који од следећих метода:
1. Увезите одређену класу :
импорт јава.утил.Вецтор;
Ово увози само класу Вецтор из пакета јава.утил.
2. Увезите све класе из пакета :
импорт јава.утил.*;
Ово увози све класе и интерфејсе из пакета јава.утил, али не укључује подпакете.
Пример: Увезите класу Вецтор
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]
Напомена:
- Коришћење пакета за увоз.*; увози све класе у пакету, али не и класе из својих потпакета.
- Када два пакета имају класе са истим именом (нпр. јава.утил.Дате и ми.пацкаге.Дате) користите потпуно квалификовано име да бисте избегли сукобе:
импорт јава.утил.Дате;
импорт ми.пацкаге.Дате;
шта ово кд значи
Врсте Јава пакета
- Уграђени пакети
- Кориснички дефинисани пакети
1. Уграђени пакети
Ови пакети се састоје од великог броја класа које су део Јаве АПИ .Неки од најчешће коришћених уграђених пакета су:
- јава.ланг : Садржи класе подршке језику (нпр. класе које дефинишу математичке операције примитивних типова података). Овај пакет се аутоматски увози.
- јава.ио: Садржи класе за подршку улазних/излазних операција.
- јава.утил : Садржи услужне класе које имплементирају структуре података као што је речник повезаних листа и подршку; за операције датума/времена.
- јава.апплет: Садржи класе за креирање аплета.
- јава.аут: Садржи класе за имплементацију компоненти за графичке корисничке интерфејсе (попут дугмета; менија итд.). 6)
- јава.нет: Садржи класе за подршку мрежним операцијама.
2. Кориснички дефинисани пакети
Ово су пакети које дефинише корисник.
1. Креирајте пакет:
Прво креирамо директоријум миПацкаге (име треба да буде исто као име пакета). Затим креирајте МиЦласс унутар директоријума са првом наредбом имена пакета.
Пример:
Javapackage 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 и новије) која омогућава члановима (поља и методе) дефинисане у класи као јавне статичне да се користи у Јава коду без навођења класе у којој је поље дефинисано.
Пример:
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
Руковање сукобима имена
Када два пакета садрже класу са истим именом (нпр. јава.утил.Дате и јава.скл.Дате) наведите пуно име пакета да бисте избегли конфликте.
импорт јава.утил.*;
импорт јава.скл.*;
// И онда користите класу Дате онда ћемо добити грешку у времену компајлирања:
Датум данас ; //ГРЕШКА-- јава.утил.Дате или јава.скл.Дате?
Компајлер неће моћи да схвати коју класу Дате желимо. Овај проблем се може решити коришћењем специфичне изјаве за увоз:
импорт јава.утил.Дате;
импорт јава.скл.*;
Ако су нам потребне обе класе Дате, онда морамо да користимо пуно име пакета сваки пут када декларишемо нови објекат те класе. На пример:
јава.утил.Дате деадЛине = нев јава.утил.Дате();
јава.скл.Дате тодаи = нев јава.скл.Дате();разлика тигра и лава
Структура именика и ЦЛАССПАТХ
Имена пакета одговарају структури директоријума. На пример, класа Цирцле у пакету цом.ззз.пројецт1.субпројецт2 се чува као:
$БАСЕ_ДИР/цом/ззз/пројецт1/субпројецт2/Цирцле.цласс
- Ево $БАСЕ_ДИР представља основни директоријум пакета.
- 'Тачка' у називу пакета одговара поддиректоријуму система датотека.
- Основни директоријум ( $БАСЕ_ДИР ) може се налазити било где у систему датотека.
- Стога Јава компајлер и време извођења морају бити обавештени о локацији $БАСЕ_ДИР да би лоцирали класе.
- То се постиже променљивом окружења која се зове ЦЛАССПАТХ .
- ЦЛАССПАТХ је сличан другој променљивој окружења ПАТХ коју користи командна шкољка за тражење извршних програма.
Подешавање ЦЛАССПАТХ
ЦЛАССПАТХ се може подесити на било који од следећих начина:
- ЦЛАССПАТХ се може трајно подесити у окружењу које су кораци у Виндовс-у
Идите на Цонтрол Панел -> Систем -> Адванцед -> Енвиронмент Вариаблес.
- Изаберите „Систем Вариаблес“ да бисте применили ЦЛАССПАТХ за све кориснике у систему.
- Изаберите „Корисничке променљиве“ да бисте га применили само на тренутно пријављеног корисника.
- Уредите или креирајте ЦЛАССПАТХ : Ако ЦЛАССПАТХ већ постоји изаберите га и кликните на 'Измени' или ако не постоји кликните на 'Ново'
- Унесите детаље о ЦЛАССПАТХ: У поље 'Вариабле наме' унесите: 'ЦЛАССПАТХ' У поље 'Вариабле валуе' унесите директоријуме и ЈАР датотеке одвојене тачком и зарезом.
- У поље 'Вариабле валуе' унесите директоријуме и ЈАР датотеке раздвојене тачком и зарезом. Пример:
.c:javaprojectclasses;d:tomcatlibservlet-api.jar
- тачка (
.) представља тренутни радни директоријум. - Да бисте проверили тренутну поставку ЦЛАССПАТХ, издајте следећу команду:
> СЕТ ЦЛАССПАТХ
ЦЛАССПАТХ се може привремено подесити за ту одређену сесију ЦМД љуске издавањем следеће команде:
> СЕТ ЦЛАССПАТХ=.;ц:јавапројецтцлассес;д:томцатлибсервлет-апи.јар
Уместо да користите променљиву окружења ЦЛАССПАТХ, можете користити и опцију командне линије -цласспатх или -цп јавац и јава команди, на пример
> јава –цласспатх ц:јавапројецтцлассес цом.абц.пројецт1.субпројецт2.МиЦласс3
Илустрација кориснички дефинисаних пакета: Креирање нашег првог пакета: Име датотеке – ЦлассОне.јава
Javapackage package_name; public class ClassOne { public void methodClassOne() { System.out.println('Hello there its ClassOne'); } }
Креирање нашег другог пакета: Име датотеке – ЦлассТво.јава
Javapackage package_one; public class ClassTwo { public void methodClassTwo() { System.out.println('Hello there i am ClassTwo'); } }
Коришћење оба креирана пакета: Име датотеке – Тестинг.јава
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модификатори су доступни само унутар исте класе. Не могу им приступити класе у истим подкласама пакета или различитим пакетима.