En basklass, även kallad superklass, är ett datorobjekt som fungerar som en grund för en eller flera härledda klasser. Alla datorspråk som är kapabla att ärva kan skapa en basklass. Beroende på deras exakta typ, kan eller kanske inte basklasser kan initieras – tilldela ett initialt värde till ett objekt – på egen hand, men de ger alltid någon form av gemensam funktionalitet till alla klasser som ärver från dem. Det finns aldrig en gräns för antalet härledda klasser, eller underklasser, som basklasser kan ha, men det kan finnas en gräns, beroende på datorspråket, för antalet basklasser en härledd klass kan ha. Språk som tillåter en härledd klass att bara ha en bas sägs upprätthålla enstaka arv, medan de som tillåter en härledd klass att ha flera basklasser använder multipelt arv.
Konkreta basklasser kan initieras på egen hand; det vill säga ett objekt av basklasstypen kan göras. Om ett klassexempel är en bas för en härledd klass Exempel2, kan ett objekt av typen Exempel2 och ett objekt av typen Exempel båda göras. Ett objekt av typen Exempel kan endast skapas genom att uttryckligen anropa den objekttypen; att skapa ett objekt av typen Exempel2 gör inte ett sekundärt objekt av typen Exempel. I varje fall bygger objekttypen som skapas enbart en instans av sig själv.
Abstrakta basklasser kan däremot inte initieras på egen hand, vilket innebär att ett objekt i basklassen inte kan göras av sig självt. Om en klass Exempel3 är en abstrakt bas för en härledd klass Exempel4, kan endast ett objekt av typen Exempel4 göras. Även om typen Exempel4 innehåller data från typen Exempel3, kommer ett försök att göra ett objekt enbart av typen Exempel3 att resultera i ett fel. Den här funktionen kan vara användbar ibland, särskilt om klass Exempel3 innehåller privata data som bör vara strikt reglerade.
Beroende på vilket språk den förekommer på kan en basklass ha lite olika beteenden och markant olika namn. I Java® hänvisas basklasser alltid till med det namnet, medan de i C++, beroende på deras struktur, kan kallas virtuella klasser. Skillnaderna i namn och funktionalitet, även om de är betydande när det gäller de datorspråk som används, innebär inte stora skillnader i principen bakom klasserna. En basklass används alltid för att kapsla in gemensam funktionalitet och data för dess härledda klasser, oavsett språk.