Objektisuuntautuneessa ohjelmoinnissa abstrakti luokka tarjoaa perusluokan, jolla voidaan tarjota muille luokille osittainen toteutus ja käyttöliittymä. Ne ovat itsestään puutteellisia ja niitä käytetään perinnöllisissä tilanteissa monilla ohjelmointikielillä, kuten Java, C ++ ja C#. Niiden käyttö perusluokana tarkoittaa, että niitä kutsutaan usein abstrakteiksi perusluokiksi (ABC).
Erottamaton osa olio-ohjelmointia, tietojen kerääminen poistaa tarpeettomat yksityiskohdat objektista. Pohjimmiltaan se keventää kohteen sen tärkeimpiin tunnistusominaisuuksiin. Nämä perusominaisuudet tarjoavat suunnitelman, jonka avulla voidaan luoda muita objekteja, joilla on samat ominaisuudet ja jotka eroavat toisistaan vain yksityiskohdissa.
Tämä suunnitelma määritellään luokana. Luokkia käytetään koteloimaan koodi, mikä helpottaa ohjelmoijaa, koska hän voi viitata tiettyihin yhteisiin rutiineihin sen sijaan, että kirjoittaisi rutiinit uudestaan ja uudestaan. Ohjelmoijat luovat aliobjekteja luokista, ja nämä objektit perivät pääluokan toiminnot ja menetelmät.
Abstraktin luokan tarkoitus on olla kehys, jolle muut luokat rakennetaan. Objekteja ei voida luoda suoraan abstraktista luokasta, vain abstraktiin luokkaan kuuluvista alaluokista. Jotta objekti voisi periä abstraktilta luokalta, on luotava alakategoria. Abstraktiluokan luodun alaluokan objektit perivät kyseisen abstraktin luokan ominaisuuksia.
Jokaisella luokalla mallinnetaan konsepti, ja abstrakteilla luokilla on tapana mallintaa abstrakteja käsitteitä abstrakteja menetelmiä käyttäen. Abstraktit menetelmät ovat abstraktin luokan aliohjelmia, jotka eivät sisällä toteutusta. Näitä aliohjelmia käytetään paikkamerkkeinä, jotka alaluokka tai objekti, joka on suunniteltu sen abstraktimenetelmän sisältävän luokan perusteella, korvataan.
On olemassa erilaisia tapoja luoda abstrakti luokka. Esimerkiksi C ++: ssa abstrakti luokka luodaan kehittämällä luokka, jossa on vähintään yksi abstrakti menetelmä tai puhdas virtuaalifunktio. Java käyttää avainsanaa “abstrakti” kuvaamaan abstraktia luokkaa. Niitä ei kuitenkaan ole määritelty ohjelmointikielillä, jotka eivät tue perinnön ajatusta.
Perintö on prosessi, jolla luodaan uusia objekteja luokista, joissa uudet objektit voivat käyttää pääluokissaan määriteltyjä toimintoja ja menetelmiä ilman tarvetta muuttaa ohjelmaa. Siksi abstrakti luokka on hyödyllinen. Näiden alaluokkien alaluokat ja aliobjektit perivät ominaisuuksia abstraktilta ylätason luokalta. Abstrakteja luokkia pidetään superluokina ja ne ovat luokkarakennehierarkian kärjessä, joten niillä ei ole mitään järkeä kielellä, joka ei tue perintöä.