Clasa abstractă vs interfață
Clasa abstractă și Interfața sunt două construcții orientate pe obiecte care se găsesc în multe limbaje de programare orientate pe obiecte, cum ar fi Java. Clasa abstractă poate fi considerată ca o versiune abstractă a unei clase obișnuite (concrete), în timp ce o interfață poate fi considerată un mijloc de implementare a unui contract. Clasa abstractă este o clasă care nu poate fi inițializată, dar poate fi extinsă. Interfața este un tip care trebuie implementat de alte clase. În Java, clasele Abstract sunt declarate folosind cuvântul cheie Abstract, în timp ce cuvântul cheie interfață este folosit pentru a defini o interfață.
Ce este o clasă abstractă?
De obicei, clasele abstracte, cunoscute și sub denumirea de clase de bază abstracte (ABC), nu pot fi instanțiate (o instanță a acelei clase nu poate fi creată). Deci, clasele abstracte sunt semnificative doar dacă limbajul de programare acceptă moștenirea (capacitatea de a crea subclase din extinderea unei clase). Clasele abstracte reprezintă de obicei un concept abstract sau o entitate cu implementare parțială sau fără implementare. Prin urmare, clasele abstracte acționează ca clase părinte din care sunt derivate clasele copil, astfel încât clasa copil va împărtăși caracteristicile incomplete ale clasei părinte și pot fi adăugate funcționalități pentru a le completa.
Clasele abstracte pot conține metode abstracte. Subclasele care extind o clasă abstractă pot implementa aceste metode abstracte (moștenite). Dacă clasa copil implementează toate aceste metode abstracte, este o clasă concretă. Dar dacă nu, clasa copil devine și o clasă Abstract. Toate acestea înseamnă că, atunci când programatorul nominalizează o clasă ca Abstract, ea spune că clasa va fi incompletă și va avea elemente care trebuie completate de subclasele moștenitoare. Acesta este un mod frumos de a crea un contract între doi programatori, care simplifică sarcinile în dezvoltarea de software. Programatorul, care scrie cod pentru a moșteni, trebuie să urmeze exact definițiile metodei (dar, desigur, poate avea propria sa implementare).
Ce este o interfață?
O interfață este un tip abstract care este folosit pentru a specifica un contract care ar trebui implementat de clase, care implementează acea interfață. Cuvântul cheie interfață este folosit pentru a defini o interfață, iar cuvântul cheie Implements este folosit pentru implementarea unei interfețe de către o clasă (în limbajul de programare Java). De obicei, o interfață va conține doar semnături de metodă și declarații constante. Orice interfață care implementează o anumită interfață ar trebui să implementeze toate metodele definite în interfață sau ar trebui să fie declarată ca o clasă abstractă. În Java, tipul unei referințe la obiect poate fi definit ca un tip de interfață. Dar acel obiect trebuie fie să fie nul, fie ar trebui să dețină un obiect al unei clase, care implementează acea interfață particulară. Folosind cuvântul cheie Implements în Java, puteți implementa mai multe interfețe într-o singură clasă.
Care este diferența dintre clasa abstractă și interfață?
Clasele abstracte reprezintă de obicei un concept abstract sau o entitate cu implementare parțială sau fără implementare. Pe de altă parte, o interfață este un tip abstract care este folosit pentru a specifica un contract care ar trebui implementat de clase. Clasele abstracte ar trebui să fie moștenite (sau extinse), în timp ce interfețele ar trebui implementate. Clasele abstracte pot conține metode abstracte, în timp ce o interfață ar trebui să conțină numai metode abstracte. Clasele abstracte pot conține orice variabilă, dar Interfețele pot defini doar constante. O clasă nu poate moșteni de la mai mult de o clasă abstractă, dar poate implementa mai multe interfețe. O interfață nu poate implementa o altă interfață. Cu toate acestea, o interfață poate extinde o clasă.