Paketi u Javi su mehanizam koji enkapsulira grupu podpaketa klasa i sučelja. Paketi se koriste za:
- Spriječite sukobe naziva dopuštajući klasama s istim imenom da postoje u različitim paketima kao što su college.staff.cse.Employee i college.staff.ee.Employee.
- Olakšajte organiziranje lociranja i korištenja sučelja klasa i drugih komponenti.
- Omogućite kontrolirani pristup zaštićenim članovima koji su dostupni unutar istog paketa i po podklasama. Zadani članovi (bez specifikacije pristupa) dostupni su samo unutar istog paketa.
Grupiranjem povezanih klasa u pakete Java promiče enkapsulaciju podataka čineći kod višekratnim korištenjem i lakšim za upravljanje. Jednostavno uvezite željenu klasu iz paketa da biste je koristili u svom programu.
Stvaranje prilagođenih paketa
Korak 1: Napravite direktorij u kojem ćemo kreirati svoje pakete i Java datoteke.
mkdir PROGRAMIRANJE
cdr puni oblik
Korak 2: Sada promijenite direktorij i stvorite drugu mapu unutar glavne mape
cd PROGRAMIRANJE
mkdir Java programiranje
cd Java programiranje
mkdir polja
Korak 3: Sada stvorite praznu tekstualnu datoteku i napišite donji Java kod i ne zaboravite ga spremiti pod istim imenom kao klasa s ekstenzijom .java (TwoPointers.java)
Klasa TwoPointers.
Javapackage JavaProgramming.arrays; // Main class present inside the package public class TwoPointers { public static void main(String[] args) { System.out.println('Inside the package'); } }
Bilješka: Ne zaboravite dodati naziv paketa unutar programske datoteke.
Korak 4: Sada pokrenite program s definiranom putanjom mape
javac srcJavaProgrammingarraysTwoPointers.java
java srcJavaProgrammingarraysTwoPointers.java
Izlaz:
Pokretanje programa s putanjom mapeStruktura mape:
Ovo je vizualni prikaz prilagođenog paketa u Javi na donjoj slici. Prvo kreiramo mapu pod nazivom Progamming i unutar nje kreiramo paket Javaprogramming, a zatim kreiramo još jedan podpaket koji se zove nizovi . Zatim unutar nje kreiramo datoteku Java klase koja je prikazana na slici ispod:
Struktura mapeRad Java paketa
Struktura imenika: Nazivi paketa i strukture direktorija usko su povezani. Na primjer, ako je naziv paketa college.staff.cse tada su tri direktorija fakultetsko osoblje i cse gdje je cse unutar osoblja, a osoblje unutar fakulteta.
Konvencije imenovanja : Imena paketa pišu se obrnutim redoslijedom od naziva domena, npr. org.geeksforgeeks.practice. Na koledžu bi konvencija mogla biti:
- koledž.tech.cse
- koledž.tech.ee
- koledž.umjetnost.povijest
Primjer:
tok java filtera
import java.util.*;
Ovdje je util potpaket kreiran unutar java paketa.
Pristup razredima unutar paketa
U Javi možemo uvesti klase iz paketa pomoću jedne od sljedećih metoda:
1. Uvezite određenu klasu :
import java.util.Vector;
Time se uvozi samo klasa Vector iz paketa java.util.
2. Uvezite sve klase iz paketa :
import java.util.*;
Ovo uvozi sve klase i sučelja iz paketa java.util, ali ne uključuje pod-pakete.
Primjer: Uvezite klasu Vector
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(); } }
Izlaz
[3 5 7]
Bilješka:
- Korištenje uvoznog paketa.*; uvozi sve klase u paketu, ali ne i klase iz njegovih pod-paketa.
- Kada dva paketa imaju klase s istim imenom (npr. java.util.Date i my.package.Date) koristite potpuno kvalificirano ime kako biste izbjegli sukobe:
import java.util.Date;
import my.package.Date;
apstraktna klasa
Vrste Java paketa
- Ugrađeni paketi
- Korisnički definirani paketi
1. Ugrađeni paketi
Ovi paketi se sastoje od velikog broja klasa koje su dio Jave API .Neki od najčešće korištenih ugrađenih paketa su:
- java.lang : Sadrži klase jezične podrške (npr. klase koje definiraju matematičke operacije primitivnih tipova podataka). Ovaj paket se automatski uvozi.
- java.io: Sadrži klase za podršku operacijama unosa/izlaza.
- java.util : Sadrži uslužne klase koje implementiraju strukture podataka kao što je rječnik povezanog popisa i podrška; za operacije datuma/vremena.
- java.applet: Sadrži klase za stvaranje apleta.
- java.aut: Sadrži klase za implementaciju komponenti za grafička korisnička sučelja (poput gumba, izbornika itd.). 6)
- java.net: Sadrži klase za podršku mrežnim operacijama.
2. Korisnički definirani paketi
To su paketi koje definira korisnik.
1. Napravite paket:
Prvo kreiramo direktorij myPackage (naziv treba biti isti kao naziv paketa). Zatim stvorite MyClass unutar direktorija s prvom naredbom imena paketa.
Primjer:
Javapackage myPackage; public class MyClass { public void getNames(String s) { System.out.println(s); } }
2. Koristite klasu u programu:
Sada ćemo koristiti Moj razred razreda u našem programu.
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); } }
Bilješka: MyClass.java mora biti spremljena unutar direktorija myPackage jer je dio paketa.
Statički uvoz u Javi
Statički uvoz u Javi odnosi se na pojednostavljenje pristupa statičkim članovima i odvaja ga od šire rasprave o korisnički definiranim paketima.
Statički uvoz je značajka predstavljena u programskom jeziku Java (verzije 5 i novije) koja omogućuje članove (polja i metode) definirane u klasi kao javne statički koristiti u Java kodu bez navođenja klase u kojoj je polje definirano.
Primjer:
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'); } }
Izlaz
GeeksforGeeks
Rješavanje sukoba imena
Kada dva paketa sadrže klasu s istim imenom (npr. java.util.Date i java.sql.Date) navedite puni naziv paketa kako biste izbjegli sukobe.
import java.util.*;
import java.sql.*;
//I onda upotrijebite klasu Datum i tada ćemo dobiti pogrešku u vremenu kompajliranja:
Današnji datum; //GREŠKA-- java.util.Date ili java.sql.Date?
Prevodilac neće moći otkriti koju klasu datuma želimo. Ovaj se problem može riješiti korištenjem specifične izjave za uvoz:
import java.util.Date;
import java.sql.*;
Ako su nam potrebne obje klase datuma, tada moramo koristiti puni naziv paketa svaki put kada deklariramo novi objekt te klase. Na primjer:
java.util.Date deadLine = novi java.util.Date();
java.sql.Datum danas = novi java.sql.Datum();sta znaci xd
Struktura direktorija i CLASSPATH
Nazivi paketa odgovaraju strukturi direktorija. Na primjer, klasa Circle u paketu com.zzz.project1.subproject2 pohranjena je kao:
$BASE_DIR/com/zzz/project1/subproject2/Circle.class
- Ovdje $BASE_DIR predstavlja osnovni direktorij paketa.
- 'Točka' u nazivu paketa odgovara poddirektoriju datotečnog sustava.
- Osnovni imenik ( $BASE_DIR ) može se nalaziti bilo gdje u datotečnom sustavu.
- Stoga Java prevodilac i runtime moraju biti obaviješteni o lokaciji $BASE_DIR kako bi locirali klase.
- To se postiže varijablom okruženja tzv CLASSPATH .
- CLASSPATH je sličan drugoj varijabli okruženja PATH koju koristi naredbena ljuska za traženje izvršnih programa.
Postavljanje CLASSPATH
CLASSPATH se može postaviti na bilo koji od sljedećih načina:
- CLASSPATH se može postaviti trajno u okruženju koje su koraci u sustavu Windows
Idite na Upravljačku ploču -> Sustav -> Napredno -> Varijable okruženja.
- Odaberite 'Sistemske varijable' da biste primijenili CLASSPATH za sve korisnike u sustavu.
- Odaberite 'Korisničke varijable' kako biste je primijenili samo na trenutno prijavljenog korisnika.
- Uredi ili stvori CLASSPATH : Ako CLASSPATH već postoji, odaberite ga i kliknite 'Uredi' ili ako ne postoji kliknite 'Novo'
- Unesite pojedinosti o CLASSPATH: U polje 'Naziv varijable' unesite: 'CLASSPATH' U polje 'Vrijednost varijable' unesite direktorije i JAR datoteke odvojene točkom-zarezom.
- U polje 'Vrijednost varijable' unesite direktorije i JAR datoteke odvojene točkom-zarezom. Primjer:
.c:javaprojectclasses;d:tomcatlibservlet-api.jar
- točka (
.) predstavlja trenutni radni direktorij. - Za provjeru trenutne postavke CLASSPATH izdajte sljedeću naredbu:
> POSTAVITE PUTANJU RAZREDA
CLASSPATH se može privremeno postaviti za tu određenu sesiju CMD ljuske izdavanjem sljedeće naredbe:
> SET CLASSPATH=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar
Umjesto korištenja varijable okoline CLASSPATH, također možete koristiti opciju naredbenog retka -classpath ili -cp naredbi javac i java
> java –classpath c:javaprojectclasses com.abc.project1.subproject2.MyClass3
Ilustracija korisnički definiranih paketa: Izrada našeg prvog paketa: Naziv datoteke – ClassOne.java
Javapackage package_name; public class ClassOne { public void methodClassOne() { System.out.println('Hello there its ClassOne'); } }
Stvaranje našeg drugog paketa: Naziv datoteke – ClassTwo.java
Javapackage package_one; public class ClassTwo { public void methodClassTwo() { System.out.println('Hello there i am ClassTwo'); } }
Korištenje oba stvorena paketa: Naziv datoteke – 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(); } }
Sada gledamo strukturu direktorija i paketa i datoteke klase za testiranje:

Modifikatori pristupa u kontekstu paketa
- Javnost: Članovi s
publicmodifikatora dostupni su s bilo kojeg mjesta bez obzira je li klasa kojoj se pristupa u istom paketu ili ne . - Zaštićen: Članovi sa zaštićenim modifikatorom dostupni su unutar istog paketa u podrazredima
- Zadano: Članovi bez modifikatora dostupni su samo unutar istog paketa
- Privatno: Članovi s
privatemodifikatora dostupni su samo unutar iste klase. Ne mogu im pristupiti klase u istim podklasama paketa ili različitim paketima.