Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
OO-Anfänger: mehrere Klassen greifen auf eine Instanz zu
Habe vor eine Instanz einer Klasse zu erzeugen und dann in verschiedenen Klassen auf genau diese eine Instanz zuzugreifen, d.h. seine Methoden zu starten, die dann z.B. die eigenen Klassenvariablen verändern.
Weiss nicht wirklich wie sowas zu organisieren ist.
Wie und in welcher Klasse muss denn diese Instanz erzeugt werden?
Wenn ich eine Instanz erzeuge kann ich doch nur innerhalb des Blockes in der sie erzeugt wurde auf sie zugreifen, oder?
Versuche mich gerade an einem kleinen BeispielProg um zu verdeutlichen was ich meine, aber vielleicht kann mir ja auch schon jetzt jemand auf die Sprünge helfen.
Du könntest das verschieden angehen.
Übergib eine erzeugte Instanz jeweils im Konstruktor der Klassen, oder ruf entsprechende Setter (Methoden die du selber schreibst) auf, die die Instanz als Parameter annehmen. Ansonsten würde mir noch das Singleton Designpattern einfallen.
a)
das Objekt X wird irgendwo recht nahe am Anfang erzeugt, z.B. in der main,
und an alle es benötigende andere Objekte als Parameter in einer Operation oder im Konstruktor mitgegeben,
die anderen Objekte merken sich X in Exemplarvariablen, falls gewünscht
b)
das Objekt wird irgendwo in einer statischen Variable abgelegt,
dann kann man mit Klassenname.variablenname von überall darauf zugreifen (Klasse + Variable public machen)
in kleinen Programmen selten verkehrt, aber Gefahr von Unorganisation
hallo nochmal.
bin endlich dazu gekommen es auszuprobieren.
ich instanziiere nun in der main ein objekt und gebe es dem konstruktor jedes weiteren objektes mit.
und in den so erzeugten objekten werden wiederum den aufgerufenen konstruktoren das ursprünglich im main erzeugte objekt mitgegeben.
Grmpf! Bitte nicht schon wieder Singletons! Ein Singleton nimmt man nur, wenn sicherstellen werden soll, dass
es absolut nur ein Objekt der Klasse geben darf. Wenn man es als "globale Variable" missbraucht, um Objekte
in seiner Anwendung herum zu reichen, wird das Design-Pattern schnell zum Anti-Pattern.
Siehe Thread: http://www.java-forum.org/de/viewtopic.php?t=69258&start=0
Hera hat einen der o.g. Vorschläge angenommen und sich gegen das Singleton-Pattern entschieden.
Der eigentliche "Trick" den du beim Singleton meinst ist übrigens nicht der Zugriff auf den private Konstruktor, sondern die Definition von Konstruktoren die ausschließlich private sind und davon mindestens einen, so dass eine Instanzerzeugung von außen über den Default-Konstruktor nicht möglich ist.
Eben das ist das Problem. Du empfiehlst ein Singleton ohne zu wissen, ob es hier überhaupt
angebracht ist. Der Threadstarter wollte nur ein Zugriff auf ein Objekt in verschiedenen anderen
Objekten - da kann man nicht auf Singleton schließen.