I objektorienterad programmering tillhandahåller en abstrakt klass en basklass som kan användas för att förse andra klasser med partiell implementering och gränssnitt. De är ofullständiga i sig och används i arvssituationer i många programmeringsspråk som Java, C++ och C#. Deras användning som basklass innebär att de ofta kallas för en abstrakt basklass (ABC).
En integrerad del av objektorienterad programmering, dataabstraktion tar bort onödiga detaljer i ett objekt. I huvudsak kokar det ner objektet till dess huvudsakliga identifierande egenskaper. Dessa grundläggande egenskaper ger en ritning som kan användas för att skapa andra objekt med samma egenskaper, som bara skiljer sig i detaljerna.
Denna ritning definieras som en klass. Klasser används för att kapsla in koden, vilket gör det lättare för programmeraren, eftersom han kan referera till specifika vanliga rutiner istället för att skriva rutinerna om och om igen. Programmerare skapar underordnade objekt från klasser, och dessa objekt ärver funktionerna och metoderna inom den överordnade klassen.
Syftet med en abstrakt klass är att vara det ramverk som andra klasser bygger på. Objekt kan inte skapas direkt från en abstrakt klass, endast från de underklasser som tillhör den abstrakta klassen. För att ett objekt ska ärva från en abstrakt klass måste en underklass skapas. Objekt av en skapad underklass av en abstrakt klass ärver egenskaperna hos den abstrakta klassen.
Varje klass modellerar ett koncept, och abstrakta klasser tenderar att modellera mer abstrakta koncept med hjälp av abstrakta metoder. Abstrakta metoder är subrutiner i en abstrakt klass som inte innehåller någon implementering. Dessa subrutiner används som platshållare för att skrivas över av en underklass eller ett objekt som är designat baserat på klassen som innehåller själva den abstrakta metoden.
Det finns olika metoder för att skapa en abstrakt klass. Till exempel i C++ skapas en abstrakt klass genom att utveckla en klass med minst en abstrakt metod eller ren virtuell funktion. Java använder ett nyckelord, ”abstrakt”, för att beteckna en abstrakt klass. De är dock inte definierade i programmeringsspråk som inte stöder idén om arv.
Arv är processen att skapa nya objekt från klasser där de nya objekten kan använda funktionerna och metoderna som definieras i sina överordnade klasser utan att behöva göra om programmet. Det är därför en abstrakt klass är användbar. Underordnade klasser och underordnade objekt av dessa underklasser ärver egenskaper från den överordnade abstrakta klassen. Abstrakta klasser anses vara superklasser och ligger överst i klassstrukturhierarkin, så de har ingen mening med ett språk som inte stöder arv.