V objektno usmerjenem programiranju (OOP) je ugnezdeni razred razred, ki je v celoti vključen v drug razred. Različni računalniški jeziki imajo podporo za to objektno usmerjeno strukturo, vključno s C++ in programskim jezikom Java. Če ugnezdeni razred ni razglašen za statičnega, ga lahko imenujemo tudi notranji razred. Razred lahko vsebuje poljubno število notranjih razredov in vsak notranji razred lahko vsebuje tudi svoje notranje razrede. Ugnezdeni razredi so lahko zelo uporabni, lahko pa tudi hitro zakomplicirajo strukture razredov, zato je najbolje, da jih uporabite kot del skrbnega načrta, da ne postanejo po nepotrebnem zapleteni.
Ugnezdeni razred je pogosto koristen za kapsuliranje majhnih skupin funkcij ali spremenljivk, ki so uporabne za drug določen razred. Na primer, če razred A vsebuje skupino metod, ki jih uporablja samo on, se te metode lahko združijo v notranji razred B. Metode znotraj notranjega razreda imajo dostop do spremenljivk in metod zunanjega razreda, medtem ko po potrebi ohranjajo lastne spremenljivke ali konstante. Ugnezdeni razred se lahko uporablja kot funkcionalna ali organizacijska konstrukcija; čeprav je uporabno za kapsuliranje funkcionalnosti, je enako uporabno kot organizacijsko orodje. Idealna uporaba notranjih razredov bo združila povezane funkcionalnosti in organizirala kodo za lažjo berljivost in razumevanje.
Komentiranje je treba izvajati na ugnezdenem razredu tako kot na zunanjem razredu; Začetniki zlahka zamenjajo notranje razrede z metodami in na to pozabijo. Ko komentirate ugnezdeni razred, je najbolje, da ga obravnavate kot razred najvišje ravni in ga ustrezno komentirate. Komentarji notranjega razreda ponujajo programeru tudi priložnost, da pojasni funkcionalnost notranjega razreda in utemeljitev njegove organizacijske sheme. V enem zunanjem razredu lahko obstaja več notranjih razredov, zato je še posebej pomembno, da programer vsak jasno komentira.
Če ugnezdeni razred ni deklariran za statičnega, je treba izrecno ustvariti primerek zunanjega razreda, preden je ustvarjen primerek notranjega razreda. Za notranje razrede, ki so razglašeni za statične, to ne drži. Statični ugnezdeni razred je običajno mogoče ustvariti z manj pritiski na tipke in ima lahko širši obseg kot preprost notranji razred, zato so statični ugnezdeni razredi uporabni za ustvarjanje enostavno dostopnih uporabnih metod, kot so tovarne ali preproste samostojne metode s širokimi aplikacijami.
Razvijalcem je pogosto v pomoč, ko so ugnezdeni razredi opisani z uporabo Unified Modeling Language. Unified Modeling Language označuje in ponazarja strukturo in obnašanje razreda na nedvoumen način, pogosto z uporabo diagramov. Ugnezdenim razredom so podani neodvisni opisi od zunanjih razredov, v katerih se nahajajo, zato je njihovo funkcionalnost zelo enostavno prepoznati in analizirati. Čeprav ni potrebno, da je ugnezdeni razred označen na ta način, je pogosto bolje, da se programerji zmotijo pri večjih podrobnostih.