Java 8

8. PACHETE ȘI INTERFACI

Un pachet este un container care este utilizat pentru a izola numele de clase. De exemplu, puteți crea o listă de clasă, introduceți-l într-un pachet și nu cred că atunci despre posibilele conflicte care ar putea apărea în cazul în care altcineva a creat o listă de clasă pe nume.







O interfață este o specificare explicită a unui set de metode care trebuie să fie prezente într-o clasă care implementează această specificație. Nu există implementarea acelorași metode în interfață. Ca și clase abstracte, interfețele au o proprietate suplimentară remarcabilă - ele pot fi moștenite în mod repetat. O clasă concretă poate fi moștenitorul unei singure superclase, dar poate implementa un număr nelimitat de interfețe.

8.1. pachete

Toți identificatorii pe care i-am folosit până acum în exemplele noastre au fost localizați în același spațiu de nume. Aceasta înseamnă că, pentru a evita situațiile de conflict, trebuia să avem grijă ca fiecare clasă să aibă propriul nume unic. Pachetele sunt un mecanism care servește atât pentru a lucra cu spațiul de nume, cât și pentru a limita vizibilitatea. Fiecare fișier java are 4 părți interne, dintre care am folosit doar unul în exemplele noastre până acum. Mai jos este forma generală a fișierului sursă Java.

8.1.1. Instrucțiunea pachetului

Primul lucru care poate apărea în fișierul sursă Java este instrucțiunea pachet, care îi spune compilatorului care pachet ar trebui să conțină clasele conținute în acest fișier. Pachetele specifică un set de spații de nume separate în care sunt stocate numele de clase. Dacă instrucțiunea pachet nu este specificată, clasele intră într-un spațiu de nume anonim, care este utilizat în mod implicit. Dacă declarați o clasă ca fiind aparținând unui anumit pachet, de exemplu, pachetul package.vaat.image;

atunci codul sursă al acestei clase ar trebui să fie stocat în directorul java / awt / image.

8.1.2. Traducerea claselor în pachete

Când încercați să puneți clasa în pachetul pe care îl va veni imediat peste o cerință strictă potrivire exactă director ierarhie cu ierarhia pachetelor. Nu puteți redenumi un pachet fără a redenumi directorul în care sunt stocate clasele sale. Această dificultate este imediat vizibilă, dar există o problemă mai puțin evidentă. Imaginați-vă că ați scris o clasă numită PackTest în pachetul de testare. Creați un director de testare, puneți fișierul PackTest.java în acest director și îl traduceți. Până acum - totul este în ordine. Cu toate acestea, atunci când încercați să o porniți, primiți mesajul "nu pot găsi clasa PackTest" de la interpret. Noua dvs. de clasă este acum stocat într-un pachet cu testul numele, astfel încât acum trebuie să precizeze întreaga ierarhie a pachetelor, separate prin nume DOTS - test.PackTest. În plus, aveți nevoie pentru a merge, fie la un nivel mai înalt în ierarhia de directoare și formați «Java test.PackTest» din nou, sau vor fi în directorul CLASSPATH, care este vârful ierarhiei claselor dezvoltate de tine.







8.1.3. Declarație de import

După instrucțiunea pachet, dar înainte de orice definiție de clasă din fișierul sursă Java, este posibil să existe o listă de declarații de import. Pachetele sunt un mecanism bun de separare a clasei, astfel încât toate clasele încorporate Java să fie stocate în pachete. Forma generală a declarației de import este:

pachet de import1 [.packet2]. (numele clasei | *);

import javautil.Date
import javaio. *;

Toate clasele Java care sunt incluse în pachet sunt stocate într-un pachet numit java. Funcțiile de bază ale limbii sunt stocate în pachetul java.lang. Acest pachet este importat automat de către traducător în toate programele. Aceasta este echivalentă cu plasarea la începutul fiecărei instrucțiuni de program a importului java.lang. *;

În cazul în care două pachete care sunt conectate utilizând instrucțiunea de import formular cu asterisc, au clase cu același nume, dar nu le folosesc, traducătorul nu răspunde. Dar atunci când încearcă să folosească o clasă, primiți imediat un mesaj de eroare, și va trebui să rescrie declarația operatorilor de import, pentru a specifica în mod explicit care pachetul de clasa pe care o aveți în minte, classMyDateextendsJava.util.Date<>

8.1.4. Acces limitat

1. subclase din același pachet;

2. nu există subclase în același pachet;

3. subclase în pachete diferite;

4. clase care nu sunt subclase și care nu sunt incluse în același pachet.

În limba Java, există trei niveluri de acces definite de cuvintele cheie: private, public și protejate, care sunt utilizate în diverse combinații. Conținutul celulelor tabelă determină disponibilitatea unei variabile cu această combinație de modificatori (coloană) din locația specificată (șir).

Există mai multe reguli care vă vor ajuta să înțelegeți. Un element declarat public este disponibil de oriunde. Tot ceea ce este declarat privat este disponibil numai în cadrul clasei și nicăieri. Dacă un element nu are deloc un modificator de nivel de acces, atunci un astfel de element va fi vizibil din subclasele și clasele aceluiași pachet. Acesta este nivelul de acces utilizat în limbajul Java implicit. Dacă este necesar ca elementul să fie accesibil numai subclaselor și indiferent dacă sunt sau nu sunt protejate în acest pachet.

Tabelul 8.1 Tabela de restricționare a accesului







Articole similare

Trimiteți-le prietenilor: