Direkt zum Inhalt
Urkunden
Java SchlüsselwörterJava-ArraysJava Objektorientierte ProgrammierungJava File HandlingEinführung in JavaGrundlagen der Java-Sprache

Innere Java-Klassen

Java Inner Classes sind Klassen, die innerhalb einer anderen Klasse definiert sind. Sie dienen dazu, Klassen, die nur an einer Stelle verwendet werden, logisch zu gruppieren, die Kapselung zu erhöhen und können zu lesbarerem und wartbarem Code führen. Innere Klassen können auf die Mitglieder (einschließlich privater Mitglieder) der äußeren Klasse zugreifen.

Arten von inneren Klassen

  1. Nicht-statische verschachtelte Klasse (innere Klasse): Assoziiert mit einer Instanz der äußeren Klasse.
  2. Statische verschachtelte Klasse: Nicht mit einer Instanz der äußeren Klasse verbunden und kann nur auf statische Mitglieder der äußeren Klasse zugreifen.
  3. Lokale innere Klasse: Wird innerhalb eines Blocks definiert, normalerweise eine Methode.
  4. Anonyme innere Klasse: Eine Klasse ohne Namen, die verwendet wird, um Objekte mit bestimmten Funktionen "on-the-fly" zu instanziieren.

Beispiele

Beispiel 1: Nicht-statische innere Klasse

public class OuterClass {
    private String message = "Hello from Outer Class";

    class InnerClass {
        void display() {
            System.out.println(message);
        }
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        OuterClass.InnerClass inner = outer.new InnerClass();
        inner.display();
    }
}

In diesem Beispiel ist InnerClass eine nicht-statische innere Klasse. Sie kann auf das Feld message von OuterClass zugreifen. Eine Instanz von InnerClass wird mit einer Instanz von OuterClass erstellt.

Beispiel 2: Statische verschachtelte Klasse

public class OuterClass {
    private static String message = "Hello from Static Nested Class";

    static class StaticNestedClass {
        void display() {
            System.out.println(message);
        }
    }

    public static void main(String[] args) {
        OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();
        nested.display();
    }
}

Hier ist StaticNestedClass eine statische verschachtelte Klasse. Sie kann direkt auf die statischen Mitglieder von OuterClass zugreifen. Es wird keine Instanz von OuterClass benötigt, um eine Instanz von StaticNestedClass zu erstellen.

Beispiel 3: Anonyme innere Klasse

public class OuterClass {
    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("Running from Anonymous Inner Class");
            }
        };
        new Thread(runnable).start();
    }
}

Dieses Beispiel demonstriert eine anonyme innere Klasse, die die Schnittstelle Runnable implementiert. Sie wird verwendet, um eine spezifische Implementierung der Methode run on the fly bereitzustellen.

Tipps und bewährte Praktiken

  • Sparsam verwenden: Innere Klassen können die Lesbarkeit des Codes erschweren, wenn sie zu oft verwendet werden. Verwende sie, wenn sie logischerweise zur äußeren Klasse gehören.
  • Anonyme Klassen: Ideal für die Implementierung von Schnittstellen oder abstrakten Klassen mit einer geringen Menge an Funktionalität.
  • Zugriff auf Mitglieder: Innere Klassen können auf alle Mitglieder der äußeren Klasse zugreifen, auch auf private Mitglieder, was sie für die Kapselung nützlich macht.
  • Statische verschachtelte Klassen: Wird verwendet, wenn die verschachtelte Klasse keinen Zugriff auf die Instanzmitglieder der äußeren Klasse benötigt.
  • Vermeide Komplexität: Halte die inneren Klassen einfach, um die Komplexität der äußeren Klasse nicht zu erhöhen.

Java Grundlagen lernen

Baue deine Java-Kenntnisse von Grund auf auf und beherrsche Programmierkonzepte.
Kostenloses Lernen beginnen