E2136 Definition für abstrakte Methode '%s' nicht erlaubt (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

<Element> ist als abstract deklariert. Der Compiler hat jedoch in der Quelldatei eine Definition für die Methode gefunden. Es ist nicht erlaubt, für eine abstrakte Deklaration eine Definition bereitzustellen.


program Produce;

  type
    Base = class
      procedure Foundation; virtual; abstract;
    end;

    procedure Base.Foundation;
    begin
    end;

begin
end.

Abstrakte Methoden dürfen nicht definiert werden. Wenn Sie dieses Programm compilieren, tritt an der Stelle Base.Foundation ein Fehler auf.


program Solve;

  type
    Base = class
      procedure Foundation; virtual; abstract;
    end;

    Derived = class (Base)
      procedure Foundation; override;
    end;

    procedure Derived.Foundation;
    begin
    end;

begin
end.

Zur Behebung dieses Problems sind zwei Schritte erforderlich. Zuerst müssen Sie die Definition der abstrakten Prozedur in der Basisklasse entfernen. Dann müssen Sie die Basisklasse erweitern, die abstrakte Prozedur als override deklarieren und für die neue Prozedur eine Definition bereitstellen.