Clasa abstractă față de clasa de beton
Cele mai populare limbi de programare orientate spre obiect, cum ar fi Java și C #, sunt bazate pe clasă. Ele realizează conceptele orientate pe obiecte, cum ar fi încapsularea, moștenirea și polimorfismul prin utilizarea clasei. Clasele reprezintă o reprezentare abstractă a obiectelor din lumea reală. Clasele pot fi concrete sau abstracte în funcție de nivelul de implementare a funcționalităților metodei. O clasă de betoane implementează complet toate metodele sale. O clasă abstractă poate fi considerată ca o versiune limitată a unei clase obișnuite (concrete), în care poate conține metode parțial implementate. În mod obișnuit, clasele de beton sunt denumite (doar) clase.
Ce este clasa de beton?
Clasa implicită este o clasă de beton. Cuvântul cheie din clasă este utilizat pentru a defini clasele (de exemplu, în Java). Și, de obicei, ele sunt pur și simplu numite clase (fără adjectivul betonului). 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 clasei sunt numite membrii clasei. În mod tipic, încapsularea este realizată prin crearea atributelor private, în timp ce se creează metode publice care pot fi utilizate pentru a accesa atributele respective. Un obiect este instanța unei clase. Moștenirea permite utilizatorului să extindă clase (numite subclase) din alte clase (numite super-clase). Polimorfismul permite programatorului să înlocuiască un obiect al unei clase în locul unui obiect din clasa sa superioară. De obicei, substantive găsite în definiția problemei devin direct clase în program. Și în mod similar, verbele devin metode. Public, privat și protejat sunt modificatorii tipici de acces folosiți pentru cursuri.
Ce este clasa abstractă?
Clasele abstracte sunt declarate folosind cuvântul cheie abstract (de exemplu, în Java,). Î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, ea devine 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).
Care este diferența dintre clasa abstractă și clasa de beton?
Clasele abstracte au de obicei o implementare parțială sau nu. Pe de altă parte, clasele concrete au întotdeauna o implementare completă a comportamentului lor. Spre deosebire de clasele de beton, clasele abstracte nu pot fi instanțiate. Prin urmare clasele abstracte trebuie să fie extinse pentru a le face utile. Clasele abstracte pot conține metode abstracte, dar clasele concrete nu pot. Atunci când o clasă abstractă este extinsă, toate metodele (atât abstracte cât și 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 ea o clasă abstractă.