Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi override und virtual? (https://www.delphipraxis.net/68922-override-und-virtual.html)

queenmum 8. Mai 2006 10:10


override und virtual?
 
Ich habe nochmal eine Frage:
Wann konkret benutze ich eigentlich override und wann virtual? Ich versteh die ganzen Erklärungen in sämtlichen Büchern nicht so richtig.
Wäre schön, wenn mir hier jemand helfen könnte...

Robert Marquardt 8. Mai 2006 10:15

Re: override und virtual?
 
Na eine neue Methode deklariert man virtual wenn man sie in abgeleiteten Klassen mit override ueberschreiben will.
virtual ist also die Basis fuer die Ableitungen der Methode.

reintroduce benutzt man wenn man beim Ableiten die Methode mit anderen Parametern versehen will.

queenmum 8. Mai 2006 10:18

Re: override und virtual?
 
Habt ihr auch ein konkretes Beispiel dafür?

Kedariodakon 8. Mai 2006 11:25

Re: override und virtual?
 
Ein Beispiel zum Verständniss:

Delphi-Quellcode:
Unit BunteFarben;

Interface

Type
  TFarbe = Class
  Protected
    { Protected-Deklaration }
    Function GetFarbe: Integer; Virtual; Abstract;
    Function GetKlasse: String; Virtual;
  Public                    
    { Public-Deklaration }
    Property Farbe: Integer Read GetFarbe;
    Property Klasse: String Read GetKlasse;
  End;

Type
  TFRot = Class( TFarbe )
  Protected
    { Protected-Deklaration }
    Function GetFarbe: Integer; Override;
    Function GetKlasse: String;  Override;
  Public                    
    { Public-Deklaration }
  End;

Type
  TFRoterFarbkasten = Class( TFarbe )
  Protected
    { Protected-Deklaration }
    Function GetFarbe(  Farbe: TFarbe ): Integer; Reintroduce;
    Function GetKlasse( Farbe: TFarbe ): String; Reintroduce;
  Public                    
    { Public-Deklaration }
    Property Farbe[ Farbe: TFarbe ]:  Integer Read GetFarbe;
    Property Klasse[ Farbe: TFarbe ]: String Read GetKlasse;
  End;

Implementation

{ TFarbe }

Function TFarbe.GetKlasse: String;
Begin
  Result := 'Basis...';
End;

{ TFRot }

Function TFRot.GetFarbe: Integer;
Begin
  Result := $0000ff;
End;

Function TFRot.GetKlasse: String;
Begin
  Result := 'Rote Farbe';
End;

{ TFRoterFarbkasten }

Function TFRoterFarbkasten.GetFarbe( Farbe: TFarbe ): Integer;
Begin
  Result := Farbe.Farbe;
End;

Function TFRoterFarbkasten.GetKlasse( Farbe: TFarbe ): String;
Begin
  Result := Farbe.Klasse;
End;

end.
Bye


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:27 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