unter Objektmigration verstehe ich nun,
dass ich aus meinSegelboot ein Objekt der
Klasse Boot mache, wobei
Ist das Objektmigration (das Wort) eine Erfindung von Dir, oder gibts das wirklich?
Eigenschaften/Methoden verloren gehen
(Logisch? - is ja noch einfach) btw. ich
meine damit nicht, dass ich eine Instanz
von Segelboot über die Definition von
Boot anspreche - ich möchte eine Instanz
von Boot erhalten.
Du kannst natuerlich meinBoot = meinSegelBoot ausfuehren. Dabei ist das meinBoot aber immer noch eine meinSegelBoot-Instanz. Das ist anders auch gar nicht moeglich, weil z.B. bei Erzeugung der SegelBoot-Instanz auch der SegelBoot-Konstruktor aufgerufen wurde und man das, was der alles gemacht hat nicht alles rueckgaengig gemacht werden kann. Wenn Du wirklich auf einer SegelBoot-Instanz eine „richtige“ Boot-Instanz erzeugen willst, dann musst Du irgendeine Methode in der MeinBoot-Klasse schreiben, die eine Boot-Instanz mach und dann entsprechend Werte setzt.
Nun wirds komplizierter:
ich habe meinBoot und weiß nun, dass es
ein Segelboot ist und möchte es zu einer
Instanz von Segelboot „migrieren“, unter
Angabe evtl. benötigter Eigenschaften.
Auch da wirst Du „von Hand“ eine Funktion schreiben muessen, die Dir eine SegelBoot-Instanz zurueckgibt.
Normalerweise wird sowas aber nicht gebraucht - wenn ja, dann hast Du wahrscheinlich irgendwo einen Ueberlegungsfehler.
Wenn Du die Erzeugung der Instanzen von Boot/Segelboot aus SegelBoot/Boot automatisieren moechtest (so dass man es fuer beliebige Klassen verwenden kann), dann hilft eventuell das RTTI-System (Laufzeittyp-Information). Java hat sowas:
Class cl = meinBoot.getClass();
(Achtung: das ist eine Klasse, die Class heisst). Ich weiss jetzt aber nicht, ob die Funktionalitaet des RTTI-Systems ausreicht, um das was Du willst zu implementieren. Du muesstest auf jedenfall durch alle Klassen-Eigenschaften enumerieren und sie dann auch lesen und veraendern koennen.
Eine andere Moeglichkeit ist eine Assign-Funktion. Du uebergiebst dieser Assign-Funktion ein Objekt. In der Assign-Funktion findest Du raus, was es fuer ein Objekt-Typ ist und dann - falls es ein sinnvoller Objekt-Type ist - kopierst Du die entsprechenden Klasseneigenschaften vom Objekt.
Besser ist aber, Du ueberdenkst nochmal, ob Du das wirklich brauchst.