AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

virtual / override ??

Ein Thema von Hansa · begonnen am 19. Aug 2004 · letzter Beitrag vom 21. Aug 2004
Antwort Antwort
Seite 5 von 5   « Erste     345   
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#41

Re: virtual / override ??

  Alt 20. Aug 2004, 19:29
Zitat:
dynamic?
nehm einfach immer "virtual" statt "dynamic", nen wirklichen unterschied wirste eh nicht bemerken.

Zitat:
reintroduce ?
wenn ich in der vorgängerklasse eine methode habe:

procedure blub(param1: typ1); virtual; so kann ich der nachfolger-methode neue parameter geben bzw ändern oder weglassen - halt neu definieren:

procedure blub(param1: typ1, meinneuerparameter: typ2); reintroduce; overload; und trotzdem noch die vorgängermethode aufrufen:

Delphi-Quellcode:
procedure blub(param1: typ1, meinneuerparameter: typ2);
begin
  inherited {blub};
  // +...
end;
Zitat:
overload?
Mit overload; sind polymorphe funktionen möglich, d.h du kannst funktionen mit gleichem namen haben die sich in den parametern/rückgabewert unterscheiden. Der compiler entscheidet dann je nachdem was du übergibst, welche funktion benutzt wird.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#42

Re: virtual / override ??

  Alt 20. Aug 2004, 20:12
@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 ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#43

Re: virtual / override ??

  Alt 20. Aug 2004, 20:19
ja tut es. oder auch inttostr. das geht mit integer, cardinal, int64, word, byte...
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#44

Re: virtual / override ??

  Alt 20. Aug 2004, 20:46
Also gut, Freiwillige vor. Wer bastelt mir mit overload eine ShowMessageHansa die einen integer und auch einen real anzeigt, ohne Typumwandlung ?

ungefähr so :

Delphi-Quellcode:
var i : integer;
    r : real
begin
  ShowMessageHansa (i);
  ShowMessageHansa (r);
end.
Da kein Widerspruch kommt, gehe ich davon aus, daß der Rest so stimmt.
Gruß
Hansa
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#45

Re: virtual / override ??

  Alt 20. Aug 2004, 20:52
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;
Peter Enenkel
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#46

Re: virtual / override ??

  Alt 20. Aug 2004, 21:08
Ah ja, stimmt. 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 ? abstract; reintroduce; wird wohl nicht viel bringen. Der Thread ist zu 95 % erledigt. Aber noch immer nicht ganz.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#47

Re: virtual / override ??

  Alt 20. Aug 2004, 22:53
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
Martin Schaefer
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#48

Re: virtual / override ??

  Alt 21. Aug 2004, 11:14
Zitat von Hansa:
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 ?
Es geht in diese Richtung, aber die Funktionalität von Write/WriteLn etc. wirst du mit Pascal-Sprachmitteln nie nachbauen können. Die beiden "Funktionen" sind, genauso wie High, Low und einige andere, eher sowas wie Compiler-Makros und keine Funktionen/Prozeduren.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#49

Re: virtual / override ??

  Alt 21. Aug 2004, 12:04
Zitat von mschaefer:
...
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.....
Warum sollte das nicht gehen? Ich kann durchaus abstrakte methoden in abgeleiteten klassen einführen. Habs jetzt nicht getestet aber dies sollte so gehen:

Delphi-Quellcode:
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;
Um hier mal ein salat aus allem zur diskusion zu stellen. Aber sollte so gehen und genau das machen was man erwartet
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz