Paket je kolekcija srodnih tipova (klasa i interfejsa) srodnost je funkcionalnog karaktera (npr. java.sql sadrži API za pristup i procesiranje podataka smeštenih u nekom izvoru, tipa relacione baze, upotrebom Java programskog jezika).
Razlozi za korišćenje paketa:
- naznačavanje srodnosti određenih tipova
- olakšavanje pronalaženja željenog tipa (fokusiranjem na samo jedan paket)
- otklanjanje potencijalnih duplikata u nazivima (jedinstveni prostor imena)
- kontrolisanje pristupa (klase u okviru istog paketa mogu da imaju neograničen pristup jedna drugoj, a spoljne ne)
Svaka klasa pisana u Javi je deo nekog paketa.
Navođenje imena paketa kome klasa pripada
package geometry;
public class Sphere {
// Details of the class definition
}
package
mora biti prva naredba u fajlu (ne računajući prazne linije i komentare).
U fajlu može postojati samo jedna deklaracija paketa.
Jedan tip može pripadati samo jednom paketu.
Unutar jednog paketa ime tipa je jedinstveno, npr. u paketu geometry pomenutog u primeru, može postojati samo
jedna klasa sa imenom Sphere.
Ime paketa može biti složeno, npr. geometry.shapes3D
sadržaj ovog paketa ne mora da ima veze sa sadržajem paketa
geometry koji se nezavisno definiše i njegovo postojanje ne uslovljava postojanje paketa geometry.shapes3D.
- Navođenjem punog imena tipa: <ime paketa>.<ime tipa>
public class Ball {
geometry.Sphere b = new geometry.Sphere();
//...
}
- Izvršiti uvoz tipa ili svih tipova paketa
import geometry.Sphere; // ili import geometry.*;
public class Ball {
Sphere b = new Sphere();
...
}
Paket java.lang se implicitno uvozi.
Metode koje sačinjavaju alat za komunikaciju sa spoljašnjim svetom/klasama se definišu kao public. Podaci članovi ne treba da budu public osim konstanti namenjenih za opštu upotrebu. Ako očekujete da će drugi ljudi koristiti vaše klase za izvođenje sopstvenih tada podatke članove definišite kao private, ali obezbedite public get-ere i set-ere. Koristite protected kada želite neometan pristup od strane klasa u istom paketu, a za klase iz drugih paketa dozvoljen samo ako su podklase. Izostavljanje modifikatora pristupa omogućava vidljivost člana klase u svim klasama paketa, dok je za klase van paketa to isto kao i upotreba private atributa.