Junior
Cosa sono le classi annidate?
sobes.tech AI
Risposta dell'AI
Le classi annidate sono classi dichiarate all’interno di un’altra classe. Si dividono in due tipi principali: classi annidate statiche (membri statici della classe) e classi interne (membri non statici).
Classi annidate statiche:
- Sono associate alla classe esterna, non alla sua istanza.
- Possono accedere solo ai membri statici della classe esterna.
- Possono essere create senza un’istanza della classe esterna.
Classi interne:
- Sono associate a un’istanza della classe esterna.
- Possono accedere a tutti i membri della classe esterna (statici e non), inclusi i privati.
- Richiedono un’istanza della classe esterna per essere create.
Esempi di utilizzo:
- Raggruppamento: Le classi logicamente correlate possono essere raggruppate per migliorare la leggibilità e l’organizzazione del codice.
- Incapsulamento: Le classi interne hanno accesso ai membri privati della classe esterna, consentendo di incapsulare i dettagli di implementazione.
- Ascoltatori di eventi (Java): Spesso usati per creare classi interne anonime.
- Classi ausiliarie: Piccole classi usate solo dalla classe esterna.
// Esempio di classe annidata statica
class OuterClass {
static int outerStaticField = 1;
int outerInstanceField = 2;
static class StaticNestedClass {
void display() {
System.out.println("Campo statico esterno: " + outerStaticField);
// Non si può accedere direttamente a outerInstanceField
}
}
}
// Esempio di classe interna
class AnotherOuterClass {
int outerField = 10;
class InnerClass {
void display() {
System.out.println("Campo esterno: " + outerField); // Accesso al campo della classe esterna
}
}
}
Tabella comparativa:
| Caratteristica | Classe annidata statica | Classe interna |
|---|---|---|
| Relazione | Con la classe esterna | Con un’istanza della classe esterna |
| Accesso ai membri esterni | Solo statici | Tutti i membri (inclusi i privati) |
| Richiede istanza | No | Sì |
| Può contenere membri statici | Sì | No (eccetto costanti) |