logo

Java paketi

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.



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


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:

OutputJavaPackages' title=Pokretanje programa s putanjom mape

Struktura 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:

Paket u Javi1' loading='lazy' title=Struktura mape

Rad 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

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

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:

Java
package 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:

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

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

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

Stvaranje našeg drugog paketa: Naziv datoteke – ClassTwo.java

Java
package 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

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

Sada gledamo strukturu direktorija i paketa i datoteke klase za testiranje:

Struktura imenika' loading='lazy' title=

Modifikatori pristupa u kontekstu paketa

  • Javnost: Članovi spublicmodifikatora 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 sprivatemodifikatora dostupni su samo unutar iste klase. Ne mogu im pristupiti klase u istim podklasama paketa ili različitim paketima.