Autor Beitrag
maxx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70



BeitragVerfasst: Do 15.04.10 23:24 
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.


Zuletzt bearbeitet von maxx am Do 15.04.10 23:48, insgesamt 1-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70



BeitragVerfasst: Fr 16.04.10 22:04 
Ok, geht wohl nicht anders. Danke.