Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#4

Re: Methodenhierarchie in der Vererbung umgehen/überspringen

  Alt 12. Jan 2004, 13:02
Das liegt daran, das Dein Objekt nunmal ein TC ist, und die Methode überschrieben wurde.

Das hat zur Folge, daß an der Speicheradresse der Methode Method() nunmal der Codeblock von TC liegt, bzw. ein Pointer dahin. Wenn Du nun einen Typecast auf TC als TA machst, geht der Compiler hin, und guckt nach, an welcher Speicheradresse von dem Objekt nun der Pointer zur Methode Method() liegt. Die Position der Adresse ist bei TA und TC identisch, und durch den TypeCast wird der WERT des Pointers eben nicht verändert: Er zeigt weiterhin auf die implementierung von TC.

Deswegen ist der Umweg den Hagen aufgezeigt hat leider unumgänglich. Du musst über @TA.Method den Codeblock der Implementierung von TA herausfinden.

Zur Verdeutlichung vergleiche mal folgende Werte:
@TC.Method;
@(TA(self)).Method;
@TA.Method;
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat