Da ja nur der Compiler prüft, kann er nur auf direkte Typen prüfen.
Im laufenden Programm ist es ja nicht verboten ... es gibt halt nur eine
Exception, wenn man diese Methoden aufrufen will.
Der Code im TStream macht eigentlich nichts Anderes, als die Procedur-Adressen zu vergleichen.
Für abstrakte Mtehoden leitet Delphi das auf eine Dummy-Methode um, wo die EAbstract-
Exception dann ausgelöst wird. (wäre schöner gewesen, wenn Delphi dort auch noch den Methoden Namen übergeben hätte, damit man auch erfährt wo es knallt).
Also der holt sich die Eintrittspunkte einmal aus seiner Instanz, bzw. aus der
VMT des Typs, welcher grade der Objektinstanz zugeordnet ist.
Und dann noch die Adresse der Vergleichsmethode, direkt aus dem gewünschten Typ, welche dann Beide verglichen werden ... wenn gleich, dann wurde nicht überschrieben.
(es sei den jemand trickst, ändert auch die
RTTI des Ursprungstypen und verschleiert so die Änderung, aber sowas macht man ja nicht
)