Objekte casten - Informationsverlust?
- 
					
					
					
					
 Hallo ich habe eine Klasse mit zwei verschiedenen Konstruktoren. Dem einen Konstruktor wird als Parameter ein Objekt vom typ x übergeben dem 2ten vom typ y. Sowohl x als auch y sind Unterklassen von Z. Pseudocode: [java] 
 public class V {Z _z = null; //z ist Superklasse von x und y public V(X _x) { 
 _z = _x;
 }public V(Y _y) { 
 _z = _y;
 }
 }
 [/code]GEht beim cast im Konstruktor jetzt informationen verloren? Klasse x und y implementieren methoden bzw membervariablen die Z nicht hat. gehen diese beim cast verloren? Falls das ohne Problem geht, wäre es ein besserer stil nur einen Konstruktor zu machen (mit Z als Parameter) und dan beim erstellen eines neuen objekts den Parameter vorher zu casten? Die Sache ist das ich eben die Klasse V mit zwei unterschiedlichen Übergabe - Objekten verwenden will. In der Klasse V wollte ich dann einen aufruf machen ala if( _z instanceof  do s.th. do s.th.if( _z instanceof Y) do s.th else.. irgendwie gefällt mir das alles nicht... *HELP*  
 
- 
					
					
					
					
 Hallo, also es gehen keine Informationen verloren, da X und Y 
 ja beide auch vom Typ Z sind, es handelt sich ja bei Vererbungen
 um "is-a" Beziehungen.Was sich letztendlich hinter der Referenz _z verbirgt ist ein Objekt 
 vom Typ X oder Y, so kannst du durch casten immer noch die überschriebenen
 Methoden in X oder Y aufrufen und mitinstance ofauch herausfinden zu welcher Klasse das Objekt gehört, 
 welches sich hinter _z versteckt.Allerdings ist dies nicht notwendig, da es der Polymorphismus in java 
 selber regelt. Also wenn du in X und Y ein Methode test() von Z
 überschreibst, wird immer die richtige benutzt, wenn du die
 Referenz _z folgendermaßen benutzt _z.test().Falls du Z nicht instanziieren willst, würde ich die Klasse Z abstract 
 machen.Hoffe es hilft ein wenig, Gamba 
 
- 
					
					
					
					
 jep hat geholfen. so kann ich es abgeben und warten was der chef dazu meint..