Entwickler-Ecke
C# - Die Sprache - vererbung und casten
maxx - Do 15.04.10 23:24
Titel: vererbung und casten
hello,
eine Frage zu OOP.
Angenomme ich habe folgende Klassen:
Klasse XA erbt von Klasse A.
Klasse XB erbt von Klasse B.
Klasse XC erbt von Klasse C.
Klasse XD erbt von Klasse D.
...
Jetzt kann ich folgendes machen:
XA xa0 = new XA();
A a = (A)xa0;
XA xa1 = (XA)a;
Hin- und her-gecastet. Funktioniert.
Das Folgende funktioniert aber nicht:
A a = new A();
XA xa = (XA)a; <- Fehler
Wie könnte man denn dieses Problem lösen?
Ich möchte also aus A ein XA machen.
Ralf Jansen - Do 15.04.10 23:43
Ich vermute mal X ist die Basisklasse von A,B,C,D ?
Dann geht das nicht weil X kein XA ist. Nur weil XA ein X ist gilt nicht auch der Umkehrschluss.
Folgendes geht
X x = new XA();
XA xy = (XA)x;
maxx - Do 15.04.10 23:45
Sehe gerade, dass ich das falsch reingeschrieben hatte.
mist!
Korrigiere ich gleich.
EDIT: Jetzt passt die Angabe :)
Ralf Jansen - Do 15.04.10 23:55
In dem Fall gilt meine Antwort ebenfalls. Ein A ist kein XA auch wenn XA ein A ist.
Was geht ist
A a = new XA();
XA xa = (XA)a;
maxx - Fr 16.04.10 22:04
Ok, geht wohl nicht anders. Danke.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!