În programarea orientată pe obiecte, o clasă abstractă oferă o clasă de bază care poate fi utilizată pentru a oferi altor clase implementare și interfață parțială. Ele sunt incomplete de la sine și utilizate în situații de moștenire în multe limbaje de programare, cum ar fi Java, C++ și C#. Utilizarea lor ca clasă de bază înseamnă că sunt adesea denumite o clasă de bază abstractă (ABC).
O parte integrantă a programării orientate pe obiecte, abstracția datelor elimină detaliile inutile ale unui obiect. În esență, se reduce obiectul la principalele sale caracteristici de identificare. Aceste caracteristici de bază oferă un model care poate fi folosit pentru a crea alte obiecte cu aceleași proprietăți, care diferă doar în detalii.
Acest plan este definit ca o clasă. Clasele sunt folosite pentru încapsularea codului, făcându-l mai ușor pentru programator, deoarece el poate face referire la rutine comune specifice în loc să scrie rutinele din nou și din nou. Programatorii creează obiecte copil din clase, iar aceste obiecte moștenesc funcțiile și metodele din clasa părinte.
Scopul unei clase abstracte este de a fi cadrul pe care sunt construite alte clase. Obiectele nu pot fi create direct dintr-o clasă abstractă, ci doar din subclasele aparținând clasei abstracte. Pentru ca un obiect să moștenească dintr-o clasă abstractă, trebuie creată o subclasă. Obiectele unei subclase create a unei clase abstracte moștenesc proprietățile acelei clase abstracte.
Fiecare clasă modelează un concept, iar clasele abstracte tind să modeleze concepte mai abstracte folosind metode abstracte. Metodele abstracte sunt subrutine din interiorul unei clase abstracte care nu conțin implementare. Aceste subrutine sunt folosite ca substituenți pentru a fi suprascrise de o subclasă sau un obiect proiectat pe baza clasei care conține metoda abstractă în sine.
Există diferite metode de a crea o clasă abstractă. De exemplu, în C++, o clasă abstractă este creată prin dezvoltarea unei clase cu cel puțin o metodă abstractă sau funcție virtuală pură. Java folosește un cuvânt cheie, „abstract”, pentru a desemna o clasă abstractă. Ele nu sunt, totuși, definite în limbaje de programare care nu suportă ideea de moștenire.
Moștenirea este procesul de a crea noi obiecte din clase în care noile obiecte pot folosi funcțiile și metodele definite în clasele lor părinte fără a fi nevoie să reformulați programul. Acesta este motivul pentru care o clasă abstractă este utilă. Clasele copil și obiectele copil ale acelor subclase moștenesc proprietăți din clasa abstractă părinte. Clasele abstracte sunt considerate superclase și se află în fruntea ierarhiei structurii de clasă, deci nu au niciun rost într-un limbaj care nu acceptă moștenirea.