Pachet Pachetul vă permite să combinați logic clase în seturi. Principalele clase sunt incluse în pachetul java java.lang. Diferite clase ajutatoare aranjate în pachetul în java.util. Clasele de intrare și de ieșire sunt incluse în pachetul java.io, și clase pentru crearea de rețele - în java.net. Unele dintre aceste pachete conțin subpachete. De exemplu, java.lang cuprinde două java.lang.reflect și java.lang.ref pachet specializat și subpachet java.util conține java.util.zip, care include clase pentru lucrul cu ZIParhivami.
Fiecare clasă are atât un nume simplu dat-o în definirea și numele complet, inclusiv numele pachetului, în care el intră. De exemplu, clasa String este parte a pachetului java.lang, iar numele său complet - java.lang.String.
Structura de pachete reflectă exact structura sistemului de fișiere. Toate fișierele sursă (Java-class) și cod de biți (clasa extensie), care formează un pachet sunt stocate în același director ca și sistemul de fișiere. Subpachetelor constituie subdirectoarele acestui director. Fiecare pachet creează un singur spațiu de nume spațiu de nume. Acest lucru înseamnă că toate numele de clase și interfețe în pachetul trebuie să fie unic. Nume în diferite pachete pot fi la fel, dar va fi diferite module software. Organizarea claselor sub formă de pachete, pentru a evita conflictele de nume între clase. Numele de clasă pachet duplicarea nu este permisă. Aparținând pachetul de clasă asigură unicitatea numelor.
Pentru a specifica faptul că clasa aparține unui anumit pachet, utilizați pachetul de directivă. urmată de numele (calea) a pachetului:
În acest exemplu, clasa HelloWorld situată în pachetul company.common. Fizic, acest lucru este directorul «$ / compania / comune». Când creați o clasă într-un IDE (de exemplu, Eclipse) pachet ar trebui să indice numele, apoi IDE-te, dacă este necesar, de a crea un director de pe hard disk-ul și plasați o nouă clasă în acest catalog. Poate fi pachet în clasa nu este definită. În acest caz, clasa va fi în pachetul implicit, care nu are nume, „$“, adică clasa va fi localizat în directorul rădăcină al codului sursă de proiect.Pachetul nume poate fi orice, dar este necesar pentru a se conforma unicitatea în proiect. Acordul «Convenții» Cod recomandă să scrie numele pachetelor în litere mici. Apoi, ei nu se vor potrivi cu numele de clasă, care, prin convenție, începe cu o literă de capital.
biblioteca standard Java API include sute de clase. Fiecare programator în cursul crea zeci de clase lor. Setul de clase este în creștere rapidă. Java vă permite să se separe clase care rezolva o sarcină specifică (sau mai multe sarcini), combinate într-o bibliotecă de clasă sub formă de fișiere jar. Dar aceste biblioteci de clasă, în plus față de standard, nu fac parte din limbajul Java.
Pachete de import și clase, import
Pentru a utiliza clasa în cerere, ar trebui să fie conectat. Deci, situat în clasa de pachet java.util Scanner poate fi conectat în modul următor:
În acest exemplu, la stabilirea / crearea unui obiect nou a fost Specifică pachetul (calea completă către fișierul). Cu toate acestea, această abordare nu este întotdeauna convenabil, și în mod alternativ pot fi importate pachete și clase în aplicarea utilizând directiva de import. care este indicat după pachetul de directivă:
Directiva import declarat la începutul codului, urmat de un nume de clasa plug-in (clasa Scanner în exemplu).
Exemplul a fost conectat la o singură clasă. Cu toate acestea, pachetul java.util conține un număr mare de diferite clase. Și nu pentru a conecta separat fiecare clasă, puteți conecta întregul pachet la o dată:
Acum puteți utiliza orice clasă din pachetul java.util.
Este posibil ca atunci când se utilizează două clase cu același nume, dar în diferite pachete. Acest lucru se aplică, pentru clasele de exemplu, data. sunt disponibile în pachetul java.util și pachetul java.sql. sau lista de pachete java.util și java.awt. Și dacă trebuie să utilizați ambele aceste clase, trebuie să specificați calea completă a claselor din pachetul:
Trebuie spus că principalele clase ale pachetului java.lang (de exemplu, String) sunt conectate în mod automat și nu necesită „import“.
clasa statică de import, de import static
În Java, puteți utiliza importurile statice. Pentru a face acest lucru, împreună cu Directiva importul utiliza modificatorul static:
Exemplul definește o clasă statică importurile de sistem și Math. care sunt metode statice. Determinarea importul statice vă permite să utilizați metode statice, fără numele clasei. În exemplul sqrt funcția statică (20) (și poate fi Math.sqrt (20)), se întoarce rădăcina pătrată a numărului. Același lucru este valabil și pentru sistemul de clasă. care definește un obiect static afară. astfel încât să puteți utiliza fără a specifica o clasă în cazul în care clasa se face sistemul de import static.
Exemplu de diferitele clase de pachete
Luați în considerare un simplu PackageExample de proiect, inclusiv 3 java-clasă. Două clasa java-situat într-un singur pachet de «ru.java.online», și al treilea - într-un alt «ru.java.online.classes». Structura proiectului este prezentată în următoarea captură de ecran:
Listarea clasei de bază, BaseClass.java
Clasa de bază include 2 câmpuri (id, nume) și get / set metode. Constructorul inițializează valorile câmpurilor.
Funcția supradeterminat toString () returnează numele clasei și câmpurile de valoare.
Listarea moștenitor, Inheritor.java
clasa Inheritor.java moștenește dintr-o clasă de bază BaseClass.java. Deoarece clase raspolayutsya în pachete diferite, clasa de bază trebuie să fie importate.
Listarea clasei principale, MainPackage.java
Clasa principală include o metodă principală statică. Deoarece această clasă nu „vede“ moștenitorul, trebuie să fie importat.
Rezultatul acestui program este afișat în consola în forma următoare:
După cum se poate observa din rezultatul programului include un nume de pachet al clasei.
Vorbind despre numele complet al clasei trebuie remarcat faptul că aceasta include nu numai numele pachetului și numele clasei, dar, de asemenea, ClassLoader încărcător de clasă. Detalii de clasă încărcător poate fi citit aici.