Le classi anonime sono classi a cui non viene assegnato un nome dalla persona che programma la classe. In genere vengono utilizzati quando la denominazione della classe non è necessaria, ad esempio quando la classe non è altro che un sottoinsieme richiesto di un’altra superclasse superiore. Il vantaggio della programmazione di classi anonime è che offrono al programmatore la possibilità di semplificare il proprio codice, specialmente nei casi in cui le classi anonime si inseriscono in più superclassi. Uno dei principali svantaggi è che le classi anonime non possono definire costruttori o essere rese private, protette o statiche, poiché la mancanza di un nome elimina queste possibilità.
Nella programmazione per computer, una classe è un oggetto generalizzato che può apparire in un numero qualsiasi di istanze specifiche. Proprio come il termine “aeroplano” copre ampiamente tutti i tipi di aerei monomotore, aerei bimotore, aerei militari e navi passeggeri, una “classe” in termini informatici è un’istanza generica di un oggetto. Non è altro che un modello che può essere compilato secondo necessità per soddisfare le esigenze dei programmatori o dell’utente finale. Ad esempio, la creazione di una classe chiamata “bicicletta” includerebbe probabilmente i parametri per una bicicletta; in altre parole, dimensione e tipo di pneumatico, numero di marce, marca e modello specifico di bicicletta, e così via.
I programmatori in genere usano classi anonime come sottoinsiemi di superclassi, che sono classi costruite da più classi proprie. Continuando l’esempio precedente con la classe “bicicletta”, una sottoclasse anonima potrebbe essere “pneumatici”, contenente informazioni su dimensioni, marca e così via.
Il vantaggio di fare ciò è che la classe anonima di “pneumatici” potrebbe adattarsi ugualmente bene a una superclasse di “biciclette” o a una superclasse di “automobili”. Creandolo come una classe anonima, il programmatore può riutilizzare più facilmente il suo lavoro se necessario. Ciò consente di risparmiare tempo e denaro e rende il codice molto più facile da capire.
Uno svantaggio è che senza un nome, le classi anonime non possono utilizzare la stessa funzionalità delle classi con nome. Ad esempio, non possono essere considerate classi private, protette o limitate. Inoltre, non possono utilizzare i costruttori, che sono subroutine quando appare per la prima volta la classe che inizializza la classe con i parametri predefiniti. Questa mancanza di flessibilità è il naturale compromesso per la semplicità di una classe anonima.