Clasa Abstract vs. Interfață
Clasa abstractă și interfața sunt două constructe orientate pe obiecte găsite în multe limbi de programare orientate pe obiecte, cum ar fi Java. Clasa abstractă poate fi considerată 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ântul cheie abstract, în timp ce cuvântul cheie de interfață este folosit pentru a defini o interfață.
Ce este o clasă abstractă?
În mod tipic, clasele Abstract, cunoscute și sub denumirea de Abstract Base Classes (ABC), nu pot fi instanțiate (nu poate fi creată o instanță a acelei clase). Deci, clasele Rezumat sunt semnificative doar dacă limbajul de programare suportă moștenirea (abilitatea de a crea subclase din extinderea unei clase). Clasele abstracte reprezintă, de obicei, un concept sau o entitate abstractă cu implementare parțială sau lipsită. Prin urmare, clasele Abstract acționează ca clase de părinte din care sunt derivate clasele copil, astfel încât clasa copil va împărtăși caracteristicile incomplete ale clasei părinte și funcționalitatea poate fi adăugată pentru a le completa.
Clasele abstracte pot conține metode Abstract. Subclasele care extind o clasă abstractă pot implementa aceste metode (moștenite) Abstract. Dacă clasa copil implementează toate aceste metode Abstract, este o clasă concretă. Dar dacă nu, clasa copil devine și o clasă abstractă. Ce înseamnă acest lucru este că, atunci când programatorul numește o clasă ca un Rezumat, ea spune că clasa va fi incompletă și va avea elemente care trebuie completate de subclasele de moștenire. Aceasta este o modalitate frumoasă de a crea un contract între doi programatori, care simplifică sarcinile în dezvoltarea de software. Programatorul, care scrie codul pentru a moșteni, trebuie să urmeze definițiile metodelor exact (dar, desigur, poate avea propria 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 pentru interfață este utilizat pentru a defini o interfață, iar cuvântul cheie Implements este utilizat pentru implementarea unei interfețe printr-o clasă (în limbajul de programare Java). De obicei, o interfață va conține doar semnături de metode ș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 de referință al unui obiect poate fi definit ca un tip de interfață. Dar acel obiect trebuie fie să fie nul sau trebuie să dețină un obiect al unei clase, care implementează interfața respectivă. Cu ajutorul cuvântului cheie Implements în Java, puteți implementa mai multe interfețe într-o singură clasă.
Care este diferența dintre clasa abstractă și interfața?
Clasele abstracte reprezintă, de obicei, un concept abstract sau o entitate cu implementare parțială sau lipsită. 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 moștenite (sau extinse), în timp ce interfețele trebuie implementate. Clasele rezumate pot conține metode abstracte, în timp ce o interfață ar trebui să conțină numai metode abstracte. Clasele abstracte pot conține orice variabile, dar interfețele pot defini numai constante. O clasă nu poate moșteni din 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ă.