Middle
Cosa sono le classi annidate e come vengono applicate nella programmazione?
sobes.tech AI
Risposta dell'AI
Le classi annidate sono classi dichiarate all'interno di un'altra classe. Consentono di raggruppare logicamente le classi usate solo in un punto, aumentano l'incapsulamento e rendono il codice più leggibile.
Le classi annidate sono:
- Statiche (Classi Annidate Statiche): Non hanno accesso ai membri non statici della classe esterna. Possono essere create senza un'istanza della classe esterna.
- Non statiche (Classi Interne): hanno accesso a tutti i membri della classe esterna (inclusi quelli privati). Per creare un'istanza di una classe interna non statica, è necessaria un'istanza della classe esterna.
Applicazioni:
- Nascondere l'implementazione: La classe annidata può essere usata come classe ausiliaria, i cui dettagli di implementazione non devono essere accessibili dall'esterno.
- Raggruppamento: Unione logica di classi strettamente correlate.
- Implementazione di callback / ascoltatori: Spesso usata per creare classi interne anonime per implementare interfacce o classi astratte.
- Iteratori: La classe interna è comoda per implementare un iteratore, poiché ha accesso allo stato interno della collezione.
Esempio (Java):
class OuterClass {
private int outerField;
// Classe annidata statica
static class StaticNestedClass {
void print() {
// Non ha accesso a outerField
System.out.println("Da StaticNestedClass");
}
}
// Classe interna non statica
class InnerClass {
void print() {
// Ha accesso a outerField
System.out.println("outerField: " + outerField);
}
}
}
// Creazione di un'istanza della classe annidata statica
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();
// Creazione di un'istanza della classe interna
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();