I objektorienterad programmering (OOP) är en kapslad klass en klass som är helt innesluten i en annan klass. En mängd olika datorspråk har stöd för denna objektorienterade struktur, inklusive C++ och programmeringsspråket Java. Om en kapslad klass inte deklareras statisk, kan den också kallas en inre klass. En klass kan innehålla valfritt antal inre klasser, och varje inre klass kan också innehålla egna inre klasser. Kapslade klasser kan vara mycket användbara, men de kan också göra klassstrukturer komplicerade snabbt, så det är bäst att de används som en del av en noggrann plan så att de inte blir onödigt komplexa.
En kapslad klass är ofta till hjälp för att kapsla in små grupper av funktioner eller variabler som är användbara för en annan specifik klass. Till exempel, om klass A innehåller en grupp av metoder som bara den använder, kan dessa metoder grupperas i inre klass B. Metoder inuti den inre klassen har tillgång till den yttre klassens variabler och metoder samtidigt som de bibehåller sina egna variabler eller konstanter vid behov. En kapslad klass kan användas som antingen en funktionell eller organisatorisk konstruktion; även om det är användbart att kapsla in funktionalitet, är det lika användbart som ett organisatoriskt verktyg. Idealisk användning av inre klasser kommer både att gruppera relaterade funktioner och organisera kod för lättare läsbarhet och förståelse.
Kommentarer bör göras på en kapslad klass precis som det görs på den yttre klassen; det är lätt för nybörjare att blanda ihop inre klasser med metoder och glömma detta. När du kommenterar en kapslad klass är det bäst att se den som en klass på toppnivå och kommentera den därefter. Inre klasskommentarer ger också en möjlighet för programmeraren att klargöra den inre klassens funktionalitet och logiken bakom dess organisationsschema. Flera inre klasser kan existera inom en yttre klass, så det är särskilt viktigt för programmeraren att kommentera var och en tydligt.
Om en kapslad klass inte deklareras statisk, måste en instans av den yttre klassen uttryckligen skapas innan en instans av den inre klassen skapas. För inre klasser som förklaras statiska är detta inte sant. En statisk kapslad klass kan vanligtvis skapas med färre tangenttryckningar och kan ha ett bredare omfång än en enkel inre klass, så statiska kapslade klasser är användbara för att skapa lättåtkomliga verktygsmetoder, såsom fabriker eller enkla fristående metoder med breda applikationer.
Det är ofta användbart för utvecklare när kapslade klasser beskrivs med Unified Modeling Language. Unified Modeling Language kommenterar och illustrerar klassstruktur och beteende på ett entydigt sätt, ofta med hjälp av diagram. Kapslade klasser ges oberoende beskrivningar från de yttre klasserna där de finns, så det är mycket lätt för deras funktionalitet att identifieras och analyseras. Även om det inte krävs för en kapslad klass att kommenteras på detta sätt, är det ofta bättre för programmerare att ta miste på mer detaljer.