Clasele anonime sunt clase cărora nu li se atribuie un nume de către persoana care programează clasa. Ele sunt utilizate de obicei atunci când numirea clasei este inutilă, cum ar fi atunci când clasa nu este altceva decât un subset obligatoriu al unei alte superclase superioare. Avantajul programării claselor anonime este că oferă programatorului șansa de a-și simplifica codul, mai ales în cazurile în care clasele anonime se vor încadra în mai multe superclase. Un dezavantaj major este că clasele anonime nu pot defini constructori sau nu pot fi făcute private, protejate sau statice, deoarece lipsa unui nume elimină aceste posibilități.
În programarea computerelor, o clasă este un obiect generalizat care poate apărea în orice număr de instanțe specifice. La fel ca termenul „avion” acoperă în linii mari toate tipurile de avioane cu un singur motor, avioane cu două motoare, avioane militare și avioane de pasageri, o „clasă” în termeni de calcul este o instanță generică a unui obiect. Nu este altceva decât un șablon care poate fi completat după cum este necesar, pentru a se potrivi nevoilor programatorilor sau ale utilizatorului final. De exemplu, crearea unei clase numită „bicicletă” ar include probabil parametrii pentru o bicicletă; cu alte cuvinte, dimensiunea și tipul anvelopelor, numărul de viteze, marca și modelul specific de bicicletă și așa mai departe.
Programatorii folosesc de obicei clase anonime ca subseturi de superclase, care sunt clase construite din mai multe clase proprii. Continuând exemplul anterior cu clasa „bicicletă”, o subclasă anonimă a acesteia ar putea fi „anvelope”, care conține informații despre dimensiunea, marca anvelopelor și așa mai departe.
Avantajul de a face acest lucru este că clasa anonimă de „anvelope” s-ar putea încadra la fel de bine într-o superclasă de „biciclete” sau într-o superclasă de „automobile”. Prin crearea acesteia ca o clasă anonimă, programatorul își poate reutiliza mai ușor munca, dacă este necesar. Acest lucru economisește timp și costuri și face codul mult mai ușor de înțeles.
Un dezavantaj este că, fără un nume, clasele anonime nu pot folosi aceeași funcționalitate ca și clasele numite. De exemplu, nu pot fi considerate clase private, protejate sau restricționate. În plus, ei nu pot utiliza constructori, care sunt subrutine atunci când apare prima clasă care inițializează clasa cu parametrii impliciti. Această lipsă de flexibilitate este compromisul natural pentru simplitatea unei clase anonime.