Clasa abstractă vs clasa concretă
Cele mai multe dintre limbajele de programare populare moderne orientate pe obiecte, cum ar fi Java și C, sunt bazate pe clasă. Ei realizează concepte orientate pe obiect, cum ar fi încapsularea, moștenirea și polimorfismul prin utilizarea claselor. Clasele sunt o reprezentare abstractă a obiectelor din lumea reală. Clasele pot fi fie concrete, fie abstracte, în funcție de nivelul de implementare a funcționalităților metodei lor. O clasă concretă implementează complet toate metodele sale. O clasă abstractă poate fi considerată ca o versiune limitată a unei clase obișnuite (concrete), unde poate conține metode parțial implementate. De obicei, clasele concrete sunt denumite (doar) clase.
Ce este clasa de beton?
Clasa implicită este o clasă concretă. Cuvântul cheie class este folosit pentru a defini clase (de exemplu, în Java). Și de obicei sunt denumite pur și simplu clase (fără adjectivul concret). Clasele concrete descriu reprezentarea conceptuală a obiectelor din lumea reală. Clasele au proprietăți numite atribute. Atributele sunt implementate ca variabile globale și de instanță. Metodele din clase reprezintă sau definesc comportamentul acestor clase. Metodele și atributele claselor sunt numite membri ai clasei. În mod obișnuit, încapsularea se realizează prin privatizarea atributelor, creând în același timp metode publice care pot fi folosite pentru a accesa aceste atribute. Un obiect este instanța unei clase. Moștenirea permite utilizatorului să extindă clase (numite subclase) de la alte clase (numite super clase). Polimorfismul permite programatorului să înlocuiască un obiect dintr-o clasă în locul unui obiect din superclasa. De obicei, substantivele găsite în definiția problemei devin direct clase în program. Și, în mod similar, verbele devin metode. Public, privat și protejat sunt modificatorii de acces tipici utilizați pentru cursuri.
Ce este clasa abstractă?
Clasele abstracte sunt declarate folosind cuvântul cheie Abstract (de exemplu, în Java,). 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, aceasta devine 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).
Care este diferența dintre clasa abstractă și clasa concretă?
Clasele abstracte au de obicei implementare parțială sau deloc. Pe de altă parte, clasele concrete au întotdeauna implementarea completă a comportamentului său. Spre deosebire de clasele concrete, clasele abstracte nu pot fi instanțiate. Prin urmare, clasele abstracte trebuie extinse pentru a le face utile. Clasele abstracte pot conține metode abstracte, dar clasele concrete nu pot. Când o clasă abstractă este extinsă, toate metodele (atât cele abstracte, cât și cele concrete) sunt moștenite. Clasa moștenită poate implementa oricare sau toate metodele. Dacă toate metodele abstracte nu sunt implementate, atunci acea clasă devine și o clasă abstractă.