Klassen in Klassen



  • Hallo!

    Auf GitHub ist mir bei manchen Projekten (überwiegend C# und Java) aufgefallen, dass oftmals Klassen in Klassen platziert sind.

    Hat das irgendeinen bestimmten Sinn?



  • Ja, z.B. eine Klasse "Buch" hat eine innere Klasse "Blatt". "Blatt" koennte zwar auch ausserhalb von Buch definiert werden, aber so ist es einfach uebersichtlicher, weil man dann weiss, dass "Blatt" zu "Buch" gehoert.

    Notwendig sind innere Klassen, wenn man moechte, dass die innere Klasse NUR von einer bestimmten Klasse (der aeusseren Klasse) verwendet wird, beispielsweise wenn man eine Klasse "Mensch" hat und diese eine innere Klasse "Testament" besitzt, die im privaten Bereich definiert wird, dass heisst, nur "Mensch"en sind dann in der Lage auf "Testament"e zuzugreifen. Wenn man z.B. noch eine Klasse "Tier" haben wuerde, koennte diese kein "Testament" haben.



  • Bei C# gibt es noch die Besonderheit (ich weiß nicht ob dies bei Java auch so ist), daß Objekte von einer inneren Klasse auch auf private Member von Objekten der umgebenen Klasse zugreifen können (d.h. es gibt eine stärkere Kopplung zwischen diesen Klassen).

    Edit: MSDN: Nested Types (C# Programming Guide)

    YAE (yet another Edit ;-): C# nested classes are like C++ nested classes, not Java inner classes -> Java geht also wiedereinmal eigene Wege...


Anmelden zum Antworten