Abstract Class vs Interface
Clasa abstractă și interfața sunt două constructe orientate pe obiecte găsite în multe limbaje de programare orientate pe obiecte precum Java. Clasa abstractă poate fi considerată ca o versiune abstractă a unei clase obișnuite (concrete), în timp ce o interfață poate fi considerată ca 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ânt cheie Abstract, în timp ce cuvântul cheie interfață este utilizat 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 (nu poate fi creată o instanță a acelei clase). 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 deloc. 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 se poate adăuga funcționalitate 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, aceasta este o clasă concretă. Dar dacă nu, clasa pentru copii devine și o clasă abstractă. Ceea ce înseamnă toate acestea este că, atunci când programatorul nominalizează o clasă ca rezumat, ea spune că clasa va fi incompletă și va avea elemente care trebuie completate de către 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 utilizat pentru a specifica un contract care ar trebui implementat pe clase, care implementează acea interfață. Cuvântul cheie interfață este utilizat pentru a defini o interfață, iar cuvântul cheie Implements este utilizat 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 ale metodelor și declarații constante. Orice interfață care implementează o anumită interfață ar trebui să implementeze toate metodele definite în interfață sau ar trebui declarată ca o clasă abstractă. În Java, tipul unei referințe de obiect poate fi definit ca un tip de interfață. Dar acel obiect trebuie să fie nul sau trebuie să dețină un obiect al unei clase, care implementează acea interfață specială. 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 deloc. Pe de altă parte, o interfață este un tip abstract care este utilizat pentru a specifica un contract care ar trebui implementat pe clase. Clasele abstracte trebuie 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ă doar 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 multe clase abstracte, dar poate implementa mai multe interfețe. O interfață nu poate implementa o altă interfață. Cu toate acestea, o interfață poate extinde o clasă.