Classi interne in Java
Sintassi: public class ClEsterna { ...
Classi interne (inner classes)
Solitamente una classe interna descrive un tipo logicamente correlato a quello della classe esterna. Le classi interne permettono una stretta relazione tra le due classi, consentendo l'accesso a tutti i metodi e campi di esemplare e statici dell'altra classe, anche se privati.
Vantaggio
Le due classi, interna ed esterna, hanno accesso a tutti i metodi e campi, anche se privati, dell'altra classe.
Limitazioni
Un oggetto di ClInterna è sempre associato a un oggetto di ClEsterna. Si possono creare oggetti di tipo ClInterna solo dentro metodi non statici di ClEsterna. Inoltre, la classe interna può essere resa inaccessibile al codice scritto in altre classi.
Ad esempio, la classe Pair, utilizzata dal dizionario, non viene mai usata al di fuori del dizionario stesso. I metodi dell'interfaccia Dictionary non ricevono parametri espliciti di tipo Pair e non restituiscono riferimenti a Pair.
Incapsulamento
Per il principio dell'incapsulamento, sarebbe preferibile che questa classe e i suoi dettagli non fossero visibili all'esterno della catena. In questo modo, una modifica della struttura interna del dizionario e/o della classe Pair non avrebbe ripercussioni sul codice scritto da chi usa il dizionario.