Sobes.tech
Junior — Middle

Was ist der Unterschied zwischen einer inneren Klasse und einer verschachtelten Klasse in der Programmierung?

sobes.tech KI

Antwort von AI

In Java (und in Android) ist eine verschachtelte Klasse jede Klasse, die innerhalb einer anderen Klasse deklariert ist. Verschachtelte Klassen gibt es in zwei Typen:

  1. Statische verschachtelte Klasse (static nested class) — deklariert mit dem Modifikator static. Sie hat keinen direkten Zugriff auf die nicht-statischen Mitglieder der äußeren Klasse.
  2. Innere Klasse (inner class) — eine verschachtelte Klasse ohne den Modifikator static. Sie ist mit einer Instanz der äußeren Klasse verbunden und hat Zugriff auf deren nicht-statische Felder und Methoden.

Beispiel:

class Outer {
    private int outerField = 10;

    static class StaticNested {
        void print() {
            // Kein direkter Zugriff auf outerField
            System.out.println("Statische verschachtelte Klasse");
        }
    }

    class Inner {
        void print() {
            // Zugriff auf outerField möglich
            System.out.println("Innere Klasse, outerField = " + outerField);
        }
    }
}

Das Hauptunterscheidungsmerkmal ist also, dass die innere Klasse mit einem Objekt der äußeren Klasse verbunden ist und auf deren nicht-statische Mitglieder zugreifen kann, während die statische verschachtelte Klasse das nicht kann.