Junior — Middle
Qual è la differenza tra una classe interna e una classe annidata nella programmazione?
sobes.tech AI
Risposta dell'AI
In Java (e in Android) una classe annidata è qualsiasi classe dichiarata all’interno di un’altra classe. Le classi annidate sono di due tipi:
- Classe annidata statica (static nested class) — dichiarata con il modificatore
static. Non ha accesso diretto ai membri non statici della classe esterna. - Classe interna (inner class) — classe annidata senza il modificatore
static. È collegata a un’istanza della classe esterna e ha accesso ai suoi campi e metodi non statici.
Esempio:
class Outer {
private int outerField = 10;
static class StaticNested {
void print() {
// Non si può accedere direttamente a outerField
System.out.println("Classe annidata statica");
}
}
class Inner {
void print() {
// Si può accedere a outerField
System.out.println("Classe interna, outerField = " + outerField);
}
}
}
Pertanto, la principale differenza è che la classe interna è collegata a un oggetto della classe esterna e può accedere ai suoi membri non statici, mentre la classe annidata statica no.