Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
26. Mai 2010
Laut deinen Vorgaben/Wünschen das Mittlere in der #4
Wie gesagt, beim Override muß die Signatur (die Deklarationen aller Parameter-Typen und des Results) übereinstimmen.
Bei Hansa war das entweder ein Copy&Paste-Fehler oder er hat es einfach nur übersehn TModelKlasseB muß TModelKlasseA sein, also mit dem GetMD von TKlasseA übereinstimmen.
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
26. Mai 2010
Selbst die älteren Compiler geben aber zumindestens Warnungen aus.
Und wie mkinzler schon richtig sagte, sind abstrakte Methoden nicht zu verachten, jedenfalls wenn sie in Basis-Klassen liegen, welche selber niemals direkt instantiirt werden ... die quasi nur eine gemeinsame Schnittelle definieren, wie z.B. TStrings.
Vorteil hierbei ist nämlich, daß der Compiler sich dann meldet, wenn man was...
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
26. Mai 2010
Dann mußt es natürlich virtual/dynamic + override sein, aber bei sowas darf sich die Signatur nicht ändern.
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
26. Mai 2010
Stimm, hast Recht.
OK, Aufrufsignatur gehört der nicht, aber zur Gesamten schon.
TModelKlasseA = class(TObject)
end;
TModelKlasseB = class(TModelKlasseA)
end;
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
26. Mai 2010
virtual und dynamic besagen, daß diese Methode in Nachfahren überschreibbar ist
override sagt, daß diese Methode eine virtuelle/dynamische Methode eines Vorfahren überschreiben soll
abstract besagt, daß diese virtuelle/dynamische Mathode in der "ausgangsklasse" zwar deklariert, aber nicht implementiert ist.
overload besagt, daß es eine gleichnamige Methode gibt (natürlich mit anderen...