Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Was bedeutet 'final'? (https://www.delphipraxis.net/80234-bedeutet-final.html)

Phoenix 22. Feb 2007 15:21

Re: Was bedeutet 'final'?
 
Zeig doch erst mal, was bei Dir nicht geht :)

lowpass 22. Feb 2007 15:31

Re: Was bedeutet 'final'?
 
Zitat:

Zitat von Phoenix
Zeig doch erst mal, was bei Dir nicht geht :)

Folgende Ausgangslage:
Delphi-Quellcode:
TOberklasse = class
    function getIt: String;virtual;
end;

TUnterklasse = class(TOberklasse)
    function getIt: String;override;
end;
Und wo kommt jetzt das "final" hin?

Phoenix 22. Feb 2007 15:44

Re: Was bedeutet 'final'?
 
Zitat:

Zitat von lowpass
Und wo kommt jetzt das "final" hin?

Dahin:
Delphi-Quellcode:
TUnterklasse = class(TOberklasse)
   function getIt: String; override; final;
end;

yörsch 22. Feb 2007 15:48

Re: Was bedeutet 'final'?
 
Zitat:

Zitat von lowpass
Und wo kommt jetzt das "final" hin?

ich kriegs auch nicht hin :wall:
und arbeite mit Delphi 7 Architect Build 4.453 in der Hilfe gibts nix über final???
ab welcher version gibt´s das :gruebel:

Robert Marquardt 22. Feb 2007 15:52

Re: Was bedeutet 'final'?
 
Gerade mit meinem Turbo Delphi getestet:
Delphi-Quellcode:
type
  ClassA = class
    function Test : String; virtual;
  end;

  ClassB = class(ClassA)
    function Test : String; reintroduce;
  end;

  ClassC = class(ClassA)
    function Test : String; override; final;
  end;
Das gibt keine Fehlermeldung.
Schreibt man das final zusaetzlich bei ClassA.Test dran, so gibt es eine Fehlermeldung fuer ClassC.Test das die Methode nicht ueberschrieben werden darf.
Bei ClassB.Test eingefuegt gibt es eine Fehlermeldung das die Methode nicht virtuell sei und daher kein final haben darf. Offensichtlich impliziert reintroduce nicht virtual. Schreibt man noch virtual dazu dann geht es wieder.

Edit:
final ist bestimmt nicht vor D8 implementiert. Das stammt vermutlich von den fuer .net noetigen Erweiterungen der Sprache.

yörsch 22. Feb 2007 15:59

Re: Was bedeutet 'final'?
 
Zitat:

Zitat von Robert Marquardt
final ist bestimmt nicht vor D8 implementiert. Das stammt vermutlich von den fuer .net noetigen Erweiterungen der Sprache.

OK das erklärt einiges...
somit ist wohl auch das Problem von Cöster erklärt... :wink:

lowpass 23. Feb 2007 09:15

Re: Was bedeutet 'final'?
 
@Robert:
Vielen Dank für das Beispiel und die Erläuterungen. Das Problem war, dass ich zwei Delphi-Versionen installiert hab (5 und 2006) und ich den Quelltext per Konsole compiliert hab. Der verwendete Compiler war der von Delphi 5. Das kann dann wohl nicht klappen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz