logo

Pachete Java

Pachetele în Java sunt un mecanism care încapsulează un grup de sub-pachete și interfețe de clase. Pachetele sunt folosite pentru:

  • Preveniți conflictele de denumire permițând claselor cu același nume să existe în pachete diferite, cum ar fi college.staff.cse.Employee și college.staff.ee.Employee.
  • Ușurează organizarea localizării și folosirii interfețelor claselor și a altor componente.
  • Oferiți acces controlat pentru membrii protejați care sunt accesibile în cadrul aceluiași pachet și pe subclase. Membrii impliciti (fără specificator de acces) sunt accesibili numai în cadrul aceluiași pachet.

Prin gruparea claselor înrudite în pachete, Java promovează încapsularea datelor, făcând codul reutilizabil și mai ușor de gestionat. Pur și simplu importați clasa dorită dintr-un pachet pentru a o utiliza în programul dvs.



Crearea pachetelor personalizate

Pasul 1: Creați un director în care ne creăm pachetele și fișierele Java.

PROGRAMARE mkdir

forma completă cdr

Pasul 2: Acum schimbați directorul și creați un alt folder în folderul principal



PROGRAMARE cd
mkdir JavaProgramming
cd JavaProgramming
matrice mkdir

Pasul 3: Acum creați un fișier text gol și scrieți codul Java de mai jos și nu uitați să-l salvați cu același nume ca și clasa cu extensia .java (TwoPointers.java)

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


Nota: Nu uitați să adăugați numele pachetului în fișierul programului.

Pasul 4: Acum rulați programul cu calea folderului definit

javac srcJavaProgrammingarraysTwoPointers.java

java srcJavaProgrammingarraysTwoPointers.java

Ieșire:

Ieșire pachete Java' title=Rulează programul cu calea folderului

Structura folderului:

Aceasta este reprezentarea vizuală a unui pachet personalizat în Java în imaginea de mai jos. Mai întâi creăm un folder numit Progamming și în interiorul lui creăm un pachet Javaprogramming și apoi creăm un alt subpachet care se numește matrice . Apoi creăm un fișier de clasă Java în interiorul acestuia, care este afișat în imaginea de mai jos:

PackageInJava1' loading='lazy' title=Structura folderului

Funcționarea pachetelor Java

Structura directorului: Numele pachetelor și structurile de directoare sunt strâns legate. De exemplu, dacă numele unui pachet este college.staff.cse, atunci trei directoare sunt personalul colegiului și cse unde cse este în interiorul personalului și personalul este în interiorul colegiului.

Convenții de denumire : Numele pachetelor sunt scrise în ordinea inversă a numelor de domenii, de ex. org.geeksforgeeks.practice. Într-o facultate convenția ar putea fi:

  • colegiu.tech.cse
  • colegiu.tech.ee
  • colegiu.istoria.artei

Exemplu:

import java.util.*;

Aici util este un sub-pachet creat în interiorul pachetului java.  

Accesarea cursurilor în interiorul unui pachet

În Java putem importa clase dintr-un pachet utilizând oricare dintre următoarele metode:

tipuri de date de referință în java

1. Importați o anumită clasă :

import java.util.Vector;

Aceasta importă doar clasa Vector din pachetul java.util.

2. Importați toate clasele dintr-un pachet :

import java.util.*;

Aceasta importă toate clasele și interfețele din pachetul java.util, dar nu include subpachetele.

Exemplu: Importați clasa 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();  } } 

Ieșire
[3 5 7] 

Nota:

  • Folosind pachetul de import.*; importă toate clasele dintr-un pachet, dar nu și clasele din sub-pachetele acestuia.
  • Când două pachete au clase cu același nume (de exemplu, java.util.Date și my.package.Date) utilizați numele complet calificat pentru a evita conflictele:

import java.util.Date;

import my.package.Date;

Tipuri de pachete Java

  • Pachete încorporate
  • Pachete definite de utilizator

1. Pachete încorporate

Aceste pachete constau dintr-un număr mare de clase care fac parte din Java API .Unele dintre pachetele încorporate utilizate în mod obișnuit sunt:

  • java.lang : Conține clase de suport pentru limbaj (de exemplu, clase care definesc tipurile de date primitive operațiuni matematice). Acest pachet este importat automat.
  • java.io: Conține clase pentru susținerea operațiunilor de intrare/ieșire.
  • java.util : Conține clase de utilitate care implementează structuri de date precum Linked List Dictionary și suport; pentru operațiuni Data/Ora.
  • java.applet: Conține clase pentru crearea applet-urilor.
  • java.aut: Conțin clase pentru implementarea componentelor pentru interfețele grafice cu utilizatorul (cum ar fi buton, meniuri etc). 6)
  • java.net: Conțin clase pentru susținerea operațiunilor de rețea.

2. Pachete definite de utilizator

Acestea sunt pachetele care sunt definite de utilizator.

1. Creați pachetul:

Mai întâi creăm un director myPackage (numele ar trebui să fie același cu numele pachetului). Apoi creați MyClass în interiorul directorului, prima declarație fiind numele pachetelor.

Exemplu:

Java
package myPackage; public class MyClass {  public void getNames(String s)  {   System.out.println(s);   } } 


2. Utilizați clasa în program:

10 ml este cât

Acum vom folosi MyClass clasa din programul nostru.

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


Nota: MyClass.java trebuie salvat în directorul myPackage deoarece face parte din pachet.  

Import static în Java

Importul static în Java se referă la simplificarea accesului la membrii statici și îl separă de discuția mai largă a pachetelor definite de utilizator.

Import static este o caracteristică introdusă în limbajul de programare Java (versiunile 5 și mai sus) care permite membrilor (câmpuri și metode) definiți într-o clasă ca public static pentru a fi folosit în codul Java fără a specifica clasa în care este definit câmpul.

Exemplu:

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

Ieșire
GeeksforGeeks 

Gestionarea conflictelor de nume

Când două pachete conțin o clasă cu același nume (de exemplu, java.util.Date și java.sql.Date) specificați numele complet al pachetului pentru a evita conflictele.

import java.util.*;
import java.sql.*;
// Și apoi folosiți clasa Date, apoi vom obține o eroare de compilare:
Data azi; //EROARE-- java.util.Date sau java.sql.Date?

Compilatorul nu va putea da seama ce clasă Date dorim. Această problemă poate fi rezolvată folosind o instrucțiune specifică de import:

import java.util.Date;
import java.sql.*;

Dacă avem nevoie de ambele clase Date, atunci trebuie să folosim un nume complet de pachet de fiecare dată când declarăm un nou obiect al acelei clase. De exemplu:

java.util.Date deadLine = nou java.util.Date();
java.sql.Date today = nou java.sql.Date();

ce inseamna xd

Structura directorului și CLASSPATH

Numele pachetelor corespund unei structuri de directoare. De exemplu, o clasă Circle din pachetul com.zzz.project1.subproject2 este stocată ca:

$BASE_DIR/com/zzz/project1/subproject2/Circle.class

  • Aici $BASE_DIR reprezintă directorul de bază al pachetului.
  • „Punctul” din numele pachetului corespunde unui subdirector al sistemului de fișiere.
  • Directorul de bază ( $BASE_DIR ) ar putea fi localizat oriunde în sistemul de fișiere.
  • Prin urmare, compilatorul Java și timpul de execuție trebuie să fie informate despre locația $BASE_DIR pentru a localiza clasele.
  • Este realizat de o variabilă de mediu numită CLASSPATH .
  • CLASSPATH este similar cu o altă variabilă de mediu PATH care este folosită de shell-ul de comandă pentru a căuta programe executabile.

Setarea CLASSPATH

CLASSPATH poate fi setat prin oricare dintre următoarele moduri:

  • CLASSPATH poate fi setat permanent în mediul pașii În Windows este

Accesați Panoul de control -> Sistem -> Avansat -> Variabile de mediu.

  • Selectați „Variabile de sistem” pentru a aplica CLASSPATH pentru toți utilizatorii din sistem.
  • Selectați „Variabile utilizator” pentru a o aplica numai pentru utilizatorul conectat în prezent.
  • Editați sau creați CLASSPATH: dacă CLASSPATH există deja, selectați-l și faceți clic pe „Editați” sau, dacă nu există, faceți clic pe „Nou”
  • Introduceți detalii CLASSPATH: În câmpul „Nume variabilă” introduceți: „CLASSPATH” În câmpul „Valoare variabilă” introduceți directoarele și fișierele JAR separate prin punct și virgulă.
  • În câmpul „Valoare variabilă” introduceți directoarele și fișierele JAR separate prin punct și virgulă. Exemplu:

.c:javaprojectclasses;d:tomcatlibservlet-api.jar

  • Punctul (.) reprezintă directorul de lucru curent.
  • Pentru a verifica setarea curentă a CLASSPATH, lansați următoarea comandă:

> SETARE CLASSPATH

CLASSPATH poate fi setat temporar pentru acea anumită sesiune de shell CMD prin lansarea următoarei comenzi:

> SETARE CLASSPATH=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar

În loc să utilizați variabila de mediu CLASSPATH, puteți utiliza și opțiunea din linia de comandă -classpath sau -cp a comenzilor javac și java, de exemplu

> java –classpath c:javaprojectclasses com.abc.project1.subproject2.MyClass3

Ilustrație a pachetelor definite de utilizator:  Crearea primului nostru pachet: Nume fișier – ClassOne.java

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

Crearea celui de-al doilea pachet: Nume fișier – ClassTwo.java

Java
package package_one; public class ClassTwo {  public void methodClassTwo()  {  System.out.println('Hello there i am ClassTwo');  } } 

Folosind ambele pachete create: Nume fișier – 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();  } } 

Acum aruncați o privire asupra structurii directoarelor atât a pachetelor, cât și a fișierului clasa de testare:

Structura directorului' loading='lazy' title=

Modificatori de acces în contextul pachetelor

  • Public: Membrii cupublicmodificatorii sunt accesibile de oriunde, indiferent dacă clasa care accesează este sau nu în același pachet .
  • Protejat: Membrii cu modificatorul protejat sunt accesibili în cadrul aceluiași pachet în subclase
  • Implicit: Membrii fără modificator sunt accesibili doar în cadrul aceluiași pachet
  • Privat: Membrii cuprivatemodificatorii sunt accesibile numai în cadrul aceleiași clase. Ele nu pot fi accesate de clase din aceleași subclase de pachete sau pachete diferite.