Geschachtelte Klassen
-
Hallo Leute kann mir vielleicht einer sagen was geschachtelte klasse ein sinn macht und wofür mann das verwendet?
Hier ein beispielpublic 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.
-
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