Clasa și interfața sunt ambele folosite pentru a crea noi tipuri de referință. O clasă este o colecție de câmpuri și metode care operează asupra câmpurilor. O interfață are metode complet abstracte, adică metode cu nimeni. O interfață este similară din punct de vedere sintactic cu clasa, dar există o diferență majoră între clasă și interfață, și anume că o clasă poate fi instanțiată, dar o interfață nu poate fi instanțiată niciodată.
Așa că haideți să învățăm mai multe diferențe între o clasă și o interfață cu ajutorul unui tabel comparativ prezentat mai jos.
Contenit: Clasa vs Interfață
- Grafic de comparație
- Definiție
- Diferențe cheie
- Concluzie
Grafic de comparație
Bază de comparație | Clasă | Interfață | |
---|---|---|---|
Basic | O clasă este instanțiată pentru a crea obiecte. | O interfață nu poate fi niciodată instanțiată, deoarece metodele nu pot efectua nici o acțiune la invocare. | |
Cuvântul cheie | clasă | interfață | |
Specificator de acces | Membrii unei clase pot fi privați, publici sau protejați. | Membrii unei interfețe sunt întotdeauna publici. | |
Methods | Metodele unei clase sunt definite pentru a efectua o acțiune specifică. | Metodele unei interfețe sunt pur abstracte. | |
Implementare/extindere | O clasă poate implementa orice număr de interfețe și poate extinde o singură clasă. | O interfață poate extinde mai multe interfețe, dar nu poate implementa nicio interfață. | |
Constructor | O clasă poate avea constructori pentru a inițializa variabilele. | O interfață nu poate avea niciodată un constructor deoarece nu există aproape nici o variabilă care să fie inițializată. |
Definiția clasei
O clasă este cel mai important aspect al programării Java, fără clase nu se poate implementa un program Java. O clasă creează tipuri de referință, iar aceste tipuri de referință sunt utilizate pentru a crea obiecte. O clasă are o semnătură și un corp. Semnătura unei clase conține numele clasei și informații care indică dacă clasa a moștenit o altă clasă. Corpul unei clase are câmpuri și metode care operează asupra acestor câmpuri. O clasă este creată cu ajutorul unui cuvânt cheie class. Să vedem cum se declară o clasă.
class class_name{/*fields...methods*/}
Când o clasă este instanțiată, fiecare obiect creat conține o copie a câmpurilor și a metodelor cu acestea. Câmpurile și membrii declarați în interiorul unei clase pot fi statici sau nestatici. Valoarea membrilor statici este constantă pentru fiecare obiect, în timp ce membrii non-statici sunt inițializați de fiecare obiect în mod diferit, în funcție de cerințele sale.
Membrii unei clase au specificatori de acces care decid vizibilitatea și accesibilitatea membrilor pentru utilizator sau pentru subclase. Specificatorii de acces sunt public, private și protected. O clasă poate fi moștenită de o altă clasă folosind specificatorul de acces care va decide vizibilitatea membrilor unei superclase (clasă moștenită) într-o subclasă (clasă moștenitoare). Astfel, clasa îndeplinește conceptul de ascundere și încapsulare a datelor în programarea orientată pe obiecte.
Definirea interfeței
O interfață se numără, de asemenea, printre tipurile de referință definite în Java. Importanța unei interfețe constă în faptul că, în Java, o clasă nu poate moșteni decât o singură clasă. Pentru a evita această restricție, proiectanții Java au introdus un concept de interfață. Din punct de vedere sintactic, o interfață este similară cu o clasă, dar îi lipsește declararea câmpurilor, iar metodele din interiorul unei interfețe nu au nicio implementare. O interfață este declarată cu ajutorul unui cuvânt cheie „interface”. Să vedem declarația unei interfețe.
interface interface_name {type var_name= value;type method1(parameter-list);type method2(parameter-list);..}
O interfață nu definește nici o metodă declarată în interiorul ei, deoarece îi lipsesc câmpurile pe care să opereze. Tocmai pentru că orice metodă din interiorul unei interfețe nu efectuează nicio acțiune, o interfață nu poate fi niciodată instanțiată. În cazul în care o interfață are vreun câmp membru, acesta trebuie inițializat în momentul declarării lor. O interfață nu conține niciodată constructori, deoarece îi lipsesc membrii de câmp pentru a fi inițializați. Astfel, o interfață definește doar ceea ce trebuie să facă o clasă în loc să definească modul în care aceasta trebuie să facă.
Odată creată, o interfață poate fi implementată de orice număr de clase folosind cuvântul cheie implements. Dar clasele care implementează o interfață trebuie să definească toate metodele din interiorul unei interfețe. O interfață poate, de asemenea, să moștenească o altă interfață folosind cuvântul cheie extend. În cazul în care o clasă implementează o interfață care extinde o altă interfață. Atunci o clasă trebuie să definească metodele ambelor interfețe care apar într-un lanț. Metodele din interiorul unei interfețe trebuie să fie întotdeauna publice, deoarece trebuie să fie accesate de clasele care le implementează.
Diferențe cheie între clasă și interfață în Java
- O clasă poate fi instanțiată prin crearea obiectelor sale. O interfață nu este niciodată instanțiată, deoarece metodele declarate în interiorul unei interfețe sunt abstracte și nu efectuează nicio acțiune, deci nu are rost să instanțiem nicio interfață.
- O clasă este declarată folosind un cuvânt cheie class. În același mod, o interfață este creată cu ajutorul unui cuvânt cheie interfață.
- Membrii unei clase pot avea specificatorul de acces de tipul public, private, protected. Dar membrii unei interfețe sunt întotdeauna publici, deoarece trebuie să fie accesați de clasele care le implementează.
- Metodele din interiorul unei clase sunt definite pentru a efectua o acțiune asupra câmpurilor declarate în clasă. Deoarece interfața lipsește în declararea câmpurilor, metodele din interiorul unei interfețe sunt pur abstracte.
- O clasă poate implementa orice număr de interfețe, dar nu poate extinde decât o singură superclasă. O interfață poate extinde orice număr de interfețe, dar nu poate implementa nicio interfață.
- O clasă are constructori definiți în interiorul ei pentru a obține inițializarea variabilelor. Dar, o interfață nu are constructori deoarece nu există câmpuri care să fie inițializate. Câmpurile unei interfețe sunt inițializate doar în momentul declarării lor.
Concluzie
Atât clasele, cât și interfețele au propria lor importanță. O clasă este utilizată atunci când trebuie să definim modul în care ar urma să se realizeze o sarcină. O interfață este utilizată atunci când trebuie să știm ce sarcină trebuie îndeplinită.
.