I objektorienterad datorprogrammering är en anonym inre klass en klass som deklareras inuti en metod men är namnlös. En anonym inre klass har flera begränsningar som skiljer den från en normal klass, inklusive en begränsning av omfattningen av de variabler den kan komma åt. Det finns några mycket specifika situationer där användning av en anonym inre klass kan göra källkoden mer läsbar, men den används främst för att upprätthålla inkapsling där genereringen av separata klasser kan komplicera det.
Encapsulation är konceptet inom objektorienterad programmering (OOP) att ett objekt och dess komponenter på något sätt ska vara skyddade och bundna till objektet. Anonyma inre klasser, och inre klasser i allmänhet, hjälper till att realisera inkapsling för särskilt komplexa objekt. Istället för att behöva skapa en klass som förlitar sig på en separat extern, binda ihop dem på konstgjord väg och potentiellt exponera några av komponenterna, kan en anonym inre klass binda samman de två ordentligt.
I vissa programmeringsspråk kan en anonym inre klass hjälpa till att övervinna restriktionerna med enstaka arv. Om ett objekt ärver från en klass men sedan behöver komma åt en annan, kan en inre klass genereras direkt och sedan skickas till lämpliga hanterare. Denna teknik är vanlig med återuppringningar och händelseavlyssnare. Det enda alternativet skulle vara att skapa en hel andra klass där endast en eller två metoder åsidosätts.
Anonyma inre klasser har vissa restriktioner på plats för att förhindra att kapslingen bryts och för att upprätthålla omfattningen. Den primära begränsningen är att en anonym inre klass inte kan komma åt variabler för den metod som den finns i om inte dessa variabler deklareras som slutgiltiga. Detta beror på att den inre klassen skulle kunna fortsätta att fungera efter livet för klassen och metoden där den häckar. Variablerna för omslagsklassen skulle förstöras när dess liv var över, så referenserna som den inre klassen hade skulle bli omedelbart ogiltiga. Det enda undantaget från detta är en slutlig variabel, eftersom den kommer att existera bortom instansen.
En av de mer specifika användningarna för en anonym inre klass är kodskydd. Många OOP-språk tillhandahåller en mekanism som kallas reflektion. Reflektion tillåter ett program att dissekera en annan klass och se vad dess medlemsvariabler och metoder är, men inte själva koden. Genom att använda en anonym inre klass skyddas innehållet i den inre klassen från reflektion och den större klassens inre arbete kan effektivt döljas.