Sobes.tech
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:

  1. Classe annidata statica (static nested class) — dichiarata con il modificatore static. Non ha accesso diretto ai membri non statici della classe esterna.
  2. 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.