| 

.NET C# Java Javascript Exception

1
In Java gibt es Top-Level-Klassen, in die nach Bedarf untergeordnete beziehungsweise innere Klassen eingefügt werden können. Wenn ich es richtig sehe, ist der Vorteil der Schachtelung, das die inneren Klassen auf die statischen Eigenschaften oder auch Variablen der äusseren Klasse zugreifen können.

class KlasseAussen {
class KlasseInnen {
class InnenInKlasseInnen {
}
}
}


Die Instanzierung einer äusseren Klasse ist vie new kein Problem. Doch wie gehe ich vor, wenn ich eine innere Klasse außerhalb der äußeren Klasse direkt instanzieren will? Wie stelle ich sicher, das dann auch das äußere Objekt instanziert ist, das ja mit der inneren Klasse mitunter interaggiert.
13.04.2012
Mahesha999 1 1
1 Antwort
0
Public nested classes solltest Du sparsam einsetzen. Ich implementiere nested classes nur private und selbst das nur selten. Beispiel (.NET) sind Enumeratoren.
Überlege genau, welche Abhängigkeiten zwischen Deinen Klassen existieren und entwirf diese entsprechend diesen Abhängigkeiten.
Wenn die innere eine Instanz der äußeren Klasse benötigt, so übergebe diese in einem Konstruktorparameter.
Wann immer die äußere die innere Klasse instanziert, übergibt sie sich selbst an den Konstruktor.
Wann immer die innere Klasse ohne vorherigen Instanzierung einer äußeren Klasse erfolgen soll, muss eine valide Instanz der äußeren Klasse via Konstruktorparamter übergeben werden. Also keine Nutzung der inneren ohne Instanz der äußeren Klasse.
Damit erzwingst Du das von Dir geforderte Design.

Gruß
Florian
13.04.2012
ffordermaier 8,4k 3 9

Stelle deine Java-Frage jetzt!