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.