PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Objekte in andere Klassen casten?


Unfug
2005-01-20, 20:18:28
Hallo,

Stellen wir uns folgendes vor:
package:[Klasse1 , Klasse2].

Klasse2 extends Klasse1;

Klasse1 obj1 = new Klasse1();

nun möchte ich gerne auaf eine Methode in Klasse2 zugreifen, über
obj1.

Wie mach ich das?

Senior Sanchez
2005-01-20, 20:21:28
package:[Klasse1 , Klasse2].

Klasse2 extends Klasse1;

Klasse1 obj1 = new Klasse1();

nun möchte ich gerne auaf eine Methode in Klasse2 zugreifen, über
obj1.

Wie mach ich das?


Wenn du mir erzählst was du vorhast, tue ich das?

Erzeugst du inder Klasse2 mal nen Objekt von Klasse 1? Warum?

also über obj1 kannst du auf keine Methode von Klasse 2 zugreifen, wie denn auch? Klasse 2 erweitert Klasse1 und nicht umgekehrt. obj1 kann also gar nicht wissen das es eine Klasse2 gibt bzw. die passende Methode von Klasse2 aufrufen.


mfg Senior Sanchez

Unfug
2005-01-20, 20:41:11
Axo jo vergessen.
Nennen wir die Hauptklassse (wo Main ist) einfach MAIN.class
In der Main Class erzeuge ich also

obj1 = new Klasse1();

Nun will ich in Klasse2.eineMethode() aufrufen.

Nur wie Du richtig gesagt hast gehts so obj1.eineMethode() nicht.
Man stellt sich jetzt vor, dass obj1 mit richtig viel Daten gefüllt ist , kann ja dann nicht einfach alles neu schreiben in ein neues klasse2 objekt.

Unfug
2005-01-20, 21:10:50
Habs hinbekommen.
hab einfach folgendes gemacht, falls jemand das gleiche Problem mal haben sollte

klasse2 obj = new klasse2();
obj.eineMethode(obj1ausKlasse1);


klappt prima

Senior Sanchez
2005-01-20, 21:53:35
Ich glaube du solltest dich nochmal eingängig mit OOP beschäftigen und dir den Sinn von Vererbungen anschauen.


mfg Senior Sanchez

Unfug
2005-01-20, 23:28:53
Irgendwas falsch gemacht?

Senior Sanchez
2005-01-21, 00:01:04
Ich glaube du verstehst den Inhalt Sinn der Vererbung nicht ganz bzw. was damit möglich ist. Das zeigt mir jedenfalls deine ursprungsfrage.


mfg Senior Sanchez

Unfug
2005-01-21, 00:09:40
Du hast recht*G*.
Hab es falsch verstanden danke für den Hinweis.


Aber da wir grad mal dabei sind, hast du ne Idee wie man Objekte in einem Vector "durcheinander" ausgeben kann?
Also das wirklich jedes Objekt auch mal ausgeben wurde?

Aqualon
2005-01-21, 07:42:12
Ich weiß zwar nicht, wie du "durcheinander" verstehst, aber grundsätzlich kannst du ja feststellen, wieviele Elemente ein Vector enthält und diese dann in einer for-Schleife auslesen. Wenn die Reihenfolge zufällig sein soll, musst du halt Zufallszahlen zwischen 0 und Vectorelemente - 1 erzeugen und diese z.B. in einem Array derselben Länge wie der Vector zwischenspeichern. In einer while-Schleife kannst du das solange machen, bis das Array gefüllt und somit alle Objekte ausgegeben worden sind.

Aqua

Unfug
2005-01-21, 14:26:31
ich habs mit der vorhanden fkt collections.shuffle() gemacht. klappt prima.

Senior Sanchez
2005-01-21, 14:58:18
Wobei mir gerade auffällt dass dein Thread-Titel nich ganz korrekt ist ;) einfache Datentypen kann man ineinander casten, Objekte dagegen nicht.


mfg Senior Sanchez

Pinoccio
2005-01-21, 15:21:11
Ich weiß zwar nicht, wie du "durcheinander" verstehst, aber grundsätzlich kannst du ja feststellen, wieviele Elemente ein Vector enthält und diese dann in einer for-Schleife auslesen. Wenn die Reihenfolge zufällig sein soll, musst du halt Zufallszahlen zwischen 0 und Vectorelemente - 1 erzeugen und diese z.B. in einem Array derselben Länge wie der Vector zwischenspeichern. In einer while-Schleife kannst du das solange machen, bis das Array gefüllt und somit alle Objekte ausgegeben worden sind.

Aqua
Nicht ganz. Dafür gibt es Iterator (http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html), ist sauberer und verständlicher!

mfg Sebastian

Aqualon
2005-01-21, 20:18:05
Wobei mir gerade auffällt dass dein Thread-Titel nich ganz korrekt ist ;) einfache Datentypen kann man ineinander casten, Objekte dagegen nicht.
Du kannst Objekte natuerlich casten, wenn das eine Objekt vom anderen erbt.

Nicht ganz. Dafür gibt es Iterator, ist sauberer und verständlicher!
Da haste natuerlich Recht, war in der Denkweise gerade beim durchgehen von Arrays.

Aqua

Senior Sanchez
2005-01-24, 11:51:14
Du kannst Objekte natuerlich casten, wenn das eine Objekt vom anderen erbt.


Nöö, das ist eben genaugenommen kein casting ;) Darauf wollte ich anspielen. Casten ist immer ne Typumwandlung, z.B. ne gebrochene Zahl in eine natürliche Zahl. Wenn das Objekt inner Vererbungshierarchie steht ist es automatisch auch des Types aller Klassen von dem geerbt wurde. Somit ist das keine Umwandlung ;)


mfg Senior Sanchez