NicoDe's Version in Ausführlich:
Abstrakt bedeutet dem Compiler, dass dies nur ein "Platzhalter" für eine Methode ist, die in einem Nachfahre des aktuellen Objektes (mit "override") implementiert wird und er nicht schon in diesem Objekt nach einer Implementation zu suchen braucht.
Implementiert ein Nachfahre diese Methode dann doch nicht, gibt der Compiler eine Warnung: "Achtung: Objekt BlaFasel wird mit abstrakten Methoden instantiiert" aus um so anzuzeigen, dass wir da wohl was vergessen haben.
Prinzip-Beispiel:
Delphi-Quellcode:
TAnzeige = class TWinControl
public
procedure Beschriften(Value:String); virtual; abstract;
end;
TLabelAnzeige = class(TAnzeige)
private
FLabel : TLabel
public
constructor Create(AOwner:TControl); override;
destructor Destroy; override;
procedure Beschriften(Value:String); override;
end;
TEditAnzeige = class(TAnzeige)
private
FEdit : TEdit
public
constructor Create(AOwner:TControl); override;
destructor Destroy; override;
procedure Beschriften(Value:String); override;
end;
implementation
constructor TLabelAnzeige.Create(AOwner:TComponent);
begin
inherited;
FLabel := TLabel.Create(self);
end;
procedure TLabelAnzeige.Beschriften(Value:String);
begin
FLabel.Caption := Value;
end;
destructor TLabelAnzeige.Destroy(Value:String);
begin
FLabel.Free;
inherited;
end;
constructor TEditAnzeige.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FEdit := TEdit.Create(self);
end;
procedure TEditAnzeige.Beschriften(Value:String);
begin
FEdit.Text := Value;
end;
destructor TEditAnzeige.Destroy(Value:String);
begin
FEdit.Free;
inherited;
end;
Gruß