Innere Klassen in Java – Statische lokale Klassen

Neben lokalen nichtstatischen inneren Klassen können in Java auch statische innere Klassen angelegt werden.

Wie bei den anderen inneren Klassen, werden statische lokale Klassen auch innerhalb äußerer Klassen definiert.

Durch das Schlüsselwort static werden die lokalen Klassen als statisch deklariert, bspw. mit folgender Klassendefinition:

static class StaticInnerClass { ... }

Statische lokale Klassen werden vom Java-Compiler wie normale globale Klassen angelegt. Der Name einer statischen lokalen Klasse setzt sich aus dem Namen der äußeren Klasse gefolgt von einem Punkt und dem Namen der inneren Klasse zusammen, etwa so: OuterClass.StaticInnerClass.

plhq_teaser_hbox_gelb_fotolia_RA Studio_46292813

Unser großes
Android Online-Kurs
Gesamtpaket



Weitere Infos

Die vom Compiler erzeugte .class-Datei enthält anstelle des Punktes als Trennzeichen das Dollarsymbol, etwa so: OuterClass$StaticInnerClass.

Eine statische lokale Klasse kann nicht auf die Membervariablen ihrer äußeren Klasse zugreifen, da sie keinen Verweis auf die instanzierende Klasse besitzt. Somit kann nicht auf die Instanz der äußeren Klasse mit OuterClass.this zugegriffen werden, da gar keine Instanz der äußeren Klasse existiert. Daher spricht man auch von statischen lokalen Klassen.

Eine statische lokale Klasse kann auch von außen instanziert werden und ist somit auch von außen sichtbar.

In der folgenden Java-Anwendung wird die statische lokale Klasse StaticInnerClass in der äußeren Klasse OuterClass definiert. Um die Benutzung von statischen inneren Klassen zu veranschaulichen, werden zwei Instanzen dieser beiden Klassen in der Testklasse StaticInnerClassTest erzeugt:

Beispielanwendung: die Testklasse für eine statische innere Klasse

/*
 * Beispielanwendung: die Testklasse für eine statische innere Klasse
 */

class OuterClass
{
  int a = 2;

  static class StaticInnerClass
  {
    public void gebeTextAus()
    {
      System.out.println("\nIn static inner class.");

      //System.out.println("a = " + a); 
      // kein Zugriff auf die Membervariable der OuterClass möglich,
      // da kein Verweis auf instanzierende äußere Klasse vorhanden
      // (keine Referenz OuterClass.this) 
    }
  }

  public void gebeTextAus()
  {
    System.out.println("\nIn outer class.");
    System.out.println("a = " + a);
  }
}

public class StaticInnerClassTest
{
  public static void main(String[] args) 
  {
    OuterClass oc = new OuterClass();
    oc.gebeTextAus();

    OuterClass.StaticInnerClass sic = new OuterClass.StaticInnerClass();
    sic.gebeTextAus();      
  }
}

Die Konsolenausgabe der Beispielanwendung ist in der unteren Abbildung dargestellt. Es ist zu erkennen, dass der Java-Compiler bei statischen lokalen Klassen den Klassennamen aus der äußeren und inneren Klasse zusammensetzt. Vor den Namen der inneren statischen Klassen wird vom Java-Compiler ein $-Zeichen zur Trennung eingefügt.

Java Innere Klasse Statisch

Innere Klassen in Java: Die statische lokale Klasse – Ausgabe der Beispielanwendung

Mit dem Link gelangt ihr zurück zum Einstiegskurs in die Programmierung mit Java.


Comments 1

  1. Pingback: Klassen in Java: Die Grundlagen der objektorientierten Programmierung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.