Clasa abstractă vs. moștenire
Clasa abstractă și moștenirea sunt două concepte importante orientate spre obiect, 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 moștenirea permite noilor clase să extindă și alte clase. Clasa abstractă este o clasă care nu poate fi inițializată, dar poate fi extinsă. Așadar, clasele Rezumat sunt semnificative doar dacă limbajul de programare suportă moștenirea. În Java, clasele Abstract sunt declarate folosind cuvântul cheie abstract, în timp ce cuvântul cheie Extends este folosit pentru a moșteni dintr-o clasă (super).
Ce este clasa 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 moștenirea?
Moștenirea este un concept orientat pe obiecte, care permite noilor clase să extindă alte clase. Extensia cuvântului cheie este folosită pentru a implementa conceptul de moștenire în limbajul de programare Java. Moștenirea oferă în mod esențial reutilizarea codului, permițând extinderea proprietăților și a comportamentului unei clase existente printr-o clasă nou definită. Atunci când o nouă subclasă (sau o clasă derivată) extinde o clasă super (sau o clasă parentală), această subclasă va moșteni toate atributele și metodele clasei super. Subclasa poate suprascrie opțional comportamentul (oferă funcționalități noi sau extinse la metode) moștenit de la clasa parentală. În mod obișnuit, o subclasă nu poate extinde mai multe clase super (de exemplu, în Java). Prin urmare, nu se poate extinde pentru moștenire 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 lipsită. Moștenirea permite noilor clase să extindă alte clase. Deoarece clasele Abstract nu pot fi instanțiate, trebuie să utilizați conceptul de moștenire pentru a utiliza clasele Abstract. Altfel, o clasă abstractă nu are nici un folos. Clasele abstracte pot conține metode Abstract și atunci când clasa este extinsă, toate metodele (Rezumat și beton) sunt moștenite. Clasa moștenită poate implementa oricare sau toate metodele. Dacă toate metodele Abstract nu sunt implementate, atunci acea clasă devine și ea o clasă abstractă. O clasă nu poate moșteni de la mai mult de o clasă abstractă (aceasta nu este o calitate a claselor Abstract per se, ci mai degrabă o restrângere a moștenirii).