Clasa abstractă vs moștenire
Clasa abstractă și Moștenirea sunt două concepte importante orientate obiect, găsite în multe limbaje de programare orientate obiect, cum ar fi Java. Clasa abstractă poate fi considerată ca o versiune abstractă a unei clase obișnuite (concrete), în timp ce Moștenirea permite noilor clase să extindă alte clase. Clasa abstractă este o clasă care nu poate fi inițializată, dar poate fi extinsă. Deci, clasele Abstract sunt semnificative doar dacă limbajul de programare acceptă moștenirea. În Java, clasele Abstract sunt declarate folosind cuvânt cheie Abstract, în timp ce cuvântul cheie Extends este folosit pentru moștenirea dintr-o (super) clasă.
Ce este clasa 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 Moștenirea?
Moștenirea este un concept orientat obiect, care permite noilor clase să extindă alte clase. Cuvântul cheie Extends este folosit pentru a implementa conceptul de moștenire în limbajul de programare Java. Moștenirea oferă în esență reutilizarea codului, permițând extinderea proprietăților și comportamentului unei clase existente de către o clasă nou definită. Când o nouă subclasă (sau o clasă derivată) extinde o superclasă (sau o clasă părinte), acea subclasă va moșteni toate atributele și metodele superclasei. Subclasa poate în mod opțional să suprascrie comportamentul (să ofere funcționalități noi sau extinse metodelor) moștenit din clasa părinte. De obicei, o subclasă nu poate extinde mai multe super-clase (de exemplu, în Java). Prin urmare, nu puteți utiliza extensii pentru moștenirea multiplă. Pentru a avea mai multe moșteniri, trebuie să utilizați interfețe.
Care este diferența dintre clasa abstractă și moștenire?
Clasele abstracte reprezintă de obicei un concept abstract sau o entitate cu implementare parțială sau deloc. Moștenirea permite noilor clase să extindă alte clase. Deoarece clasele abstracte nu pot fi instantaneate, trebuie să utilizați conceptul de moștenire pentru a utiliza clasele abstracte. În caz contrar, o clasă Abstract nu are rost. Clasele abstracte pot conține metode abstracte și atunci când clasa este extinsă, toate metodele (abstracte și concrete) sunt moștenite. Clasa moștenită poate implementa oricare sau toate metodele. Dacă nu sunt implementate toate metodele abstracte, atunci acea clasă devine și o clasă abstractă. O clasă nu poate moșteni de la mai multe clase Abstracte (aceasta nu este o calitate a claselor Abstracte în sine, ci mai degrabă o restricție a moștenirii).