Thema: Delphi Was bedeutet 'final'?

Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Was bedeutet 'final'?

  Alt 5. Nov 2006, 17:01
Zitat von 3_of_8:
Auch statische Methoden können überschrieben werden, nämlich mithilfe von reintroduce.
Nein, können sie nicht. Oder dein Begriff für die Benennung "überschreiben" geht auf Tipp-Ex zurück anstatt auf Polymorphie und virtual method slots.
einfach mal ein Consolen App Project anlegen und den Code reinwerfen:
Delphi-Quellcode:
program Bleistift;

{$APPTYPE CONSOLE}

type
  ClassA = class
    function Test : String; virtual;
  end;

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

  ClassC = class(ClassA)
    function Test : String; override;
  end;

  ClassAClass = class of ClassA;

function ClassA.Test : String;
begin
  result := 'A';
end;

function ClassB.Test : String;
begin
  result := 'B';
end;

function ClassC.Test : String;
begin
  result := 'C';
end;

 procedure Test(classRef : ClassAClass);
var
  inst : ClassA;
begin
  inst := classRef.Create();
  Writeln(inst.Test());
  inst.Free();
end;

begin
  Test(ClassA);
  Test(ClassB);
  Test(ClassC);
end.
Es kommt natürlich A A C raus, nicht A B C.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat