Geschachtelte Klassen



  • Hallo Leute kann mir vielleicht einer sagen was geschachtelte klasse ein sinn macht und wofür mann das verwendet?
    Hier ein beispiel

    public class Telefon
    {
    private static class Cell
    {
    Object key;
    Object value;
    Cell(Object key, Object value)
    {
    this.key = key; this.value = value;
    }
    }
    Danke



  • die werden vor allem fuer ereignisse verwendet.
    z.b:
    (ich kenn die namen der methoden nicht mehr genau, is
    aber fuer das beispiel egal)

    public class MeinFenster extends JFrame
    {
       public MeinFenster()
       {
         addWindowListener( new Programmende() );
       }
    
       private class Programmende extends WindowAdapter
       {
          public void windowClosing( Event e )
          {
             System.exit( 0 );
          }
       }
    }
    


  • hi, man verwendet das vor allem für kleine Klassen, die man nicht gleich als Extra-Klasse anlegen will. Außerdem haben geschachtelte Klassen zugriff auf Variablen der drüberliegenden Klasse, was auch manchmal einfacher ist als die Koummnikation zwischen 2 verschiedenen nicht-geschachtelten Klassen. Ich wüßt nix bei dem man zwingend innere Klassen verwenden müßte und nicht alternativ normale Klassen verwenden könnte.



  • ich möchte generel für das obige beispiel eine antwort und was hat das static mit geschatelten klassen an sich.

    Danke



  • Danke

    aber was hat das static mit geschachtelten klassen an sich?



  • ich kenn das static class nur im zusammenhang daß man ne Instanz der static-Klasse dann außerhalb beider Klassn in der Form ÄußereKlassenName.StaticKlasseName myClass= new ÄußereKlassenName.StaticKlasseName() anlegen kann...sozusagen daß man den Namen der äußeren Klasse als ne Art namespace im C++ Sinn hat. In deinem BEispiel is nur seltsm daß die static-Klasse privat ist, weil das oben genannte ginge dann natürlich nimma..ob static-innere Klassen sonst noch ne besondere Funktion haben weiß ich nicht.


  • Mod

    Original erstellt von crass:
    ob static-innere Klassen sonst noch ne besondere Funktion haben weiß ich nicht.

    ...wie sieht es mit Klassenvariablen vom Typ der inneren Klasse in der äußeren Klasse aus?! 🙂 ...ich vermute einfach mal, dass das mit inneren Klassen, die nicht static sind, nicht geht.

    ...oder wenn man die innere Klasse in nem statischen Initialisierer nutzen möchte!



  • Danke Leute


Anmelden zum Antworten