Objektisuuntautuneessa ohjelmoinnissa (OOP) sisäkkäinen luokka on luokka, joka on täysin toisen luokan sisällä. Tätä objektipohjaista rakennetta tukevat useat tietokonekielet, mukaan lukien C ++ ja Java-ohjelmointikieli. Jos sisäkkäistä luokkaa ei julisteta staattiseksi, sitä voidaan kutsua myös sisäluokiksi. Luokka voi sisältää minkä tahansa määrän sisäisiä luokkia, ja jokainen sisäluokka voi sisältää myös omia sisäisiä luokkia. Sisäkkäiset luokat voivat olla erittäin hyödyllisiä, mutta ne voivat myös tehdä luokan rakenteista monimutkaisia nopeasti, joten on parasta käyttää niitä osana huolellista suunnitelmaa, jotta niistä ei tule tarpeettoman monimutkaisia.
Sisäkkäinen luokka on usein hyödyllinen koteloimaan pieniä funktioryhmiä tai muuttujia, jotka ovat hyödyllisiä toiselle tietylle luokalle. Jos luokka A sisältää esimerkiksi vain sen käyttämien menetelmien ryhmän, nämä menetelmät voidaan ryhmitellä sisäiseen luokkaan B. Sisäisen luokan sisällä olevilla menetelmillä on pääsy ulkoisen luokan muuttujiin ja menetelmiin säilyttäen tarvittaessa omat muuttujansa tai vakionsa. Sisäkkäistä luokkaa voidaan käyttää joko toiminnallisena tai organisatorisena rakenteena; Vaikka on hyödyllistä koteloida toimintoja, se on yhtä hyödyllinen organisaation työkaluna. Ihanteellinen sisäluokkien käyttö yhdistää sekä toiminnot että järjestää koodin luettavuuden ja ymmärtämisen helpottamiseksi.
Kommentointi on tehtävä sisäkkäiseen luokkaan aivan kuten ulkoiseen luokkaan; aloittelijoiden on helppo sekoittaa sisäluokat menetelmiin ja unohtaa tämä. Kun kommentoit sisäkkäistä luokkaa, on parasta ajatella sitä ylätason luokana ja kommentoida sitä sen mukaisesti. Sisäisen luokan kommentit tarjoavat myös ohjelmoijalle mahdollisuuden selventää sisäisen luokan toiminnallisuutta ja sen organisaatiorakenteen perusteluja. Ulkoisessa luokassa voi olla useita sisäluokkia, joten ohjelmoijan on erityisen tärkeää kommentoida jokainen selvästi.
Jos sisäkkäistä luokkaa ei julisteta staattiseksi, ulkoisen luokan ilmentymä on luotava nimenomaisesti ennen sisäisen luokan ilmentymän luomista. Sisäisten luokkien osalta, jotka on ilmoitettu staattisiksi, tämä ei pidä paikkaansa. Staattinen sisäkkäinen luokka voidaan yleensä luoda pienemmillä näppäinpainalluksilla ja sillä voi olla laajempi ulottuvuus kuin yksinkertaisella sisäisellä luokalla, joten staattiset sisäkkäiset luokat ovat hyödyllisiä helppokäyttöisten apuohjelmien, kuten tehtaiden tai yksinkertaisten itsenäisten menetelmien luomiseen, joilla on laaja sovellus.
Kehittäjille on usein hyödyllistä, kun sisäkkäisiä luokkia kuvataan käyttämällä yhtenäistä mallinnuskieltä. Yhtenäinen mallinnuskieli merkitsee ja havainnollistaa luokan rakennetta ja käyttäytymistä yksiselitteisesti, usein kaavioiden avulla. Sisäkkäisille luokille annetaan itsenäiset kuvaukset ulkoisista luokista, joissa ne asuvat, joten niiden toiminnallisuuden tunnistaminen ja analysointi on erittäin helppoa. Vaikka sisäkkäistä luokkaa ei tarvitse merkitä tällä tavalla, on usein parempi, että ohjelmoijat erehtyvät yksityiskohtaisemmin.