![]() |
Re: virtual / override ??
Zitat:
Zitat:
Delphi-Quellcode:
so kann ich der nachfolger-methode neue parameter geben bzw ändern oder weglassen - halt neu definieren:
procedure blub(param1: typ1); virtual;
Delphi-Quellcode:
und trotzdem noch die vorgängermethode aufrufen:
procedure blub(param1: typ1, meinneuerparameter: typ2); reintroduce; overload;
Delphi-Quellcode:
procedure blub(param1: typ1, meinneuerparameter: typ2);
begin inherited {blub}; // +... end; Zitat:
|
Re: virtual / override ??
@Mods: der Beitrag hier steht oben nochmals, anscheinend war ich noch im Edit-Modus, ohne es zu merken.
es geht weiter : reintroduce fast abgehakt, sofern das hier so stimmt: ich erweitere Leusels Bsp. um ein Adoptivkind (Kanzler sei Dank ), von dem das Geburtsdatum nicht genau feststeht. Sagen wir, es ist ein Mädchen, also vom Typ TFrau. In diesem Fall ist das Geburtsdatum irrelevant. TFrauAdoptiv soll nur das Geburtsjahr beinhalten. Ich steige also mit "reintroduce" neu in die Vererbungskette ein. Also TMensch -> TFrau -> TFrauAdoptiv als "reintroduce", was dann allerdings bedeutet, daß alle bereits in TMensch und danach deklarierten Eigenschaften neu definiert (zumindest initialisiert) werden müssen dynamic abgehakt, wegen Überflüssigkeit. overload nicht abgehakt Ist zwar soweit klar, aber ich habe mir das MessageDlg mal näher angesehen. Das ist auch "overload", d.h. die Parameterliste wird flexibel. Nun stellt sich für mich folgende Frage : Mich hat immer schon gewundert, daß "writeln" egal war, ob ein integer, ein string oder sonstwas angezeigt werden sollte. Geht das Overload in diese Richtung ? noch was ? |
Re: virtual / override ??
ja tut es. oder auch inttostr. das geht mit integer, cardinal, int64, word, byte...
|
Re: virtual / override ??
Also gut, Freiwillige vor. :mrgreen: Wer bastelt mir mit overload eine ShowMessageHansa die einen integer und auch einen real anzeigt, ohne Typumwandlung ?
ungefähr so :
Delphi-Quellcode:
Da kein Widerspruch kommt, gehe ich davon aus, daß der Rest so stimmt.
var i : integer;
r : real begin ShowMessageHansa (i); ShowMessageHansa (r); end. |
Re: virtual / override ??
bidde schön:
Delphi-Quellcode:
interface
procedure ShowMessageHansa(r: real); overload; procedure ShowMessageHansa(i: integer); overload; implementation procedure ShowMessageHansa(r: real); begin Showmessage( Floattostr(r) ); end; procedure ShowMessageHansa(i: integer); begin Showmessage( inttostr(i) ); end; |
Re: virtual / override ??
Ah ja, stimmt. :shock: Dann ist das auch erledigt. Aber das Thema an sich noch nicht ganz. Was ist nun mit den Mischformen ? Wo macht das Sinn, wo nicht ?
Delphi-Quellcode:
wird wohl nicht viel bringen. Der Thread ist zu 95 % erledigt. Aber noch immer nicht ganz.
abstract; reintroduce;
|
Re: virtual / override ??
Moin, Spätmoin,
Hallo Hansa, das bringt tatsächlich nichts. Mit Abstract sagst Du dem Compiler ja nur, dass Du ein Klassenhinweis anlegst. Die eigentliche Klasse wird ja später erst definiert. Das reintroduce wird der Compiler hier freundlicherweise ignorierern (was will der den..), den dieses dient nur dem unterdrücken der Wanrmeldung, wenn Du eine Klasse unerreichbar überschreibst (ohne override). Da Abstract bedingt, das hier noch keine Klasse da ist, so ist auch keine Klasse da die Du schon überschreiben kannst. Somit würde ehedem nie eine Warnung entstehen, die mit reintroduce unterdrückt werden könnte..... Gute Nacht // Martin |
Re: virtual / override ??
Zitat:
|
Re: virtual / override ??
Zitat:
Delphi-Quellcode:
Um hier mal ein salat aus allem zur diskusion zu stellen. Aber sollte so gehen und genau das machen was man erwartet :cyclops:
type
TClass1 = class public procedure XY; virtual; end; TClass2 = Class(TClass1) public procedure XY; reintroduce;overload; virtual; abstract; procedure XY(i:integer); reintroduce; overload; end; TClass3 = Class(TClass2) public procedure XY; override; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz