21. Java package (paket)

Java package (paket) je grupa sličnih tipova klasa, interfejsa i pod-paketa.

Paket u javi može biti kategorisan u dve forme, ugrađeni paket i korisnički definisani paket.

Postoje mnogi ugrađeni paketi kao što su java, lang, awt, javax, swing, net, io, util, sql itd.

Ovdje, detaljno ćemo razmotriti kreiranje i upotrebu korisnički definisanih paketa.
Prednosti java paketa
1) Java paket se koristi da kategoriše klase i interfejse tako da se oni mogu lakše održavati.
2) Java paket obezbjeđuje zaštitu pristupa.
3) Java paket otklanja kolizije u imenima.

Jednostavan primjer java paketa
Ključna riječ package se koristi za kreiranje paketa u javi.

//sačuvano kao Simple.java  
package mypack;  
public class Simple{  
 public static void main(String args[]){  
    System.out.println("Welcome to package");  
   }  
}

Kako pristupiti paketu iz drugog paketa?

Postoje tri načina za pristup paketu izvan paketa.

  1. import package.*;
  2. import package.classname;
  3. puno kvalifikovano ime.

1) Pomoću packagename.*

Ako koristimo package.* tada će sve klase i interfejsi ovog paketa biti dostupni ali ne i podpaketi.
Ključna riječ import se koristi da učini klase i interfejse drugog paketa dostupnim tekućem paketu.
Primjer paketa koji importuje packagename.*

//sačuvano od A.java  
  
package pack;  
public class A{  
  public void msg(){System.out.println("Hello");}  
}

//sačuvano od B.java  
  
package mypack;  
import pack.*;  
  
class B{  
  public static void main(String args[]){  
   A obj = new A();  
   obj.msg();  
  }  
}
Ispis na ekranu:
Hello

2) Pomoću packagename.classname
Ako importujemo package.classname tada će samo deklarisana klasa ovog paketa biti dostupna.
Primjer paketa pomoću import package.classname

    //sačuvano od A.java  
      
    package pack;  
    public class A{  
      public void msg(){System.out.println("Hello");}  
    }  

    //sačuvano od B.java  
      
    package mypack;  
    import pack.A;  
      
    class B{  
      public static void main(String args[]){  
       A obj = new A();  
       obj.msg();  
      }  
    }
Ispis na ekranu:
Hello

3) Pomoću punog kvalifikovanog imena
Ako koristimo puno kvalifikovano ime tada će samo deklarisana klasa ovog paketa biti dostupna. Ovdje nema potrebe za importom. Ali zato je potrebno koristiti puno kvalifikovano ime svaki put kada se pristupa klasi ili interfejsu.
Ovo se obično koristi kada dva paketa imaju isto ime klase napr. java.util i java.sql paket sadrže Date klasu.
Primjer paketa gdje se koristi puno kvalifikovano ime

    //sačuvano od A.java  
      
    package pack;  
    public class A{  
      public void msg(){System.out.println("Hello");}  
    }  

    //sačuvano od B.java  
      
    package mypack;  
    class B{  
      public static void main(String args[]){  
       pack.A obj = new pack.A(); //korištenje punog kvalifikovanog imena
       obj.msg();  
      }  
    }
Ispis na ekranu:
Hello

Napomena 1: Ako importujemo paket, podpaketi neće biti importovani.
Ako importujemo paket, sve klase i interfejsi tog paketa će biti importovani izuzimajući klase i interfejse podpaketa. Dakle, potrebno je takođe importovati i podpakete.

Napomena 2: Sekvenca programa mora biti paket zatim import zatim klasa.

Podpaket (subpackage) u javi
Paket unutar paketa se naziva podpaket (subpackage). On se kreira kada treba dalje kategorizovati paket.
Pogledajmo primjer, Sun Microsystem je definisao paket pod imenom java koji sadrži mnoge klase kao što su System, String, Reader, Writer, Socket itd. Ove klase predstavljaju određenu grupu napr. Reader i Writer klase služe za ulazno/izlazne operacije, Socket i ServerSocket klase su za umrežavanje itd. Tako, Sun je podkategorizovao java paket u podpakete kao što su lang, net, io itd. i stavio klase koje se odnose na ulaz/izlaz u io paket, Server i ServerSocket klase u net pakete itd.
Standard u definisanju paketa je domain.company.package
Primjer podpaketa

package com.company.core;  
class Simple{  
  public static void main(String args[]){  
   System.out.println("Hello subpackage");  
  }  
}
Ispis na ekranu:
Hello subpackage

Pravilo: Može biti samo jedna public klasa u java source fajlu i mora biti sačuvana po public imenu klase.
//sačuvano kao C.java inače Compile Time Error  
  
class A{}  
class B{}  
public class C{}

Kako staviti dve public klase u jedan paket?

Ako želimo staviti dve public klase u jedan paket, moramo imati dva java source fajla koja sadrže jednu public klasu, ali zadržati isto ime paketa. Na primjer:

//sačuvaj kao A.java  
      
    package company;  
    public class A{}  

    //sačuvaj kao B.java  
      
    package company;  
    public class B{}

Objektno orijentisano programiranje u Javi    Index