Guten Tag,
Kann mir jemand erklären wie die ganze Konstruktoren Geschichte in Delphi funktioniert ?
Ich blicke da einfach nicht durch.
Ich habe ein neues
VCL-Form erstellt und möchte nun einen eigenen Konstruktor erstellen:
Delphi-Quellcode:
public
{ Public-Deklarationen }
Constructor Create(_pnlColor:TColor;_pnlTitle:String;_memoContent:TStringList);
//....
constructor TFehler.Create(_pnlColor: TColor; _pnlTitle: String;
_memoContent: TStringList);
begin
Inherited Create(self); //1
setPanelTitle(_pnlTitle);
setPanelTitleColor(_pnlColor);
fillMemo(_memoContent);
end;
1. Warum muss hier Create(self) angegeben werden ? Warum reicht
Inherited; nicht aus ?
Ich verstehe das so: Inherited muss benutzt werden damit der Standard-Konstruktor aufgerufen wird. Wenn ich Inherited nicht verwenden würde, dann würde mein VLC-Formular nicht erstellt werden.
2. Wann werden folgende Schlüsselwörter benötigt.
- override
- overload
- reintroduce
- virtual
3. Wie erstelle ich einen eigenen Konstruktor ohne Parameter ?
Ich möchte noch bestimmte Werte setzten, wenn das Objekt erstellt wird.
Im Beispiel
hier wird ein
overload; angegeben.
Dies begreife ich nicht. Ein
override; würde für mich mehr Sinn ergeben. Ich möchte ja einen eigenen Standard-Constructor erstellen sonst würden ja zwei gleiche exisieren:
Delphi-Quellcode:
type
// Define a parent class, base on TObject by default
TFruit = class
public
name : string;
Constructor Create; overload; // This constructor uses defaults
Constructor Create(name : string); overload;
end;
constructor TFruit.Create;
begin
Inherited;
//Setze Initial-Werte...
end;
Somit existiert hier ja:
Delphi-Quellcode:
Create; //Standard-Konstruktor
Create; //Überladener-Konstruktor
Create(name:String); overload; //Überladener-Konstruktor was ok ist weil durch die parameter kann der Konstruktor vom anderen unterschieden werden
Wie weis Delphi nun welchen
Create; Konstruktor genommen werden soll ?
Danke für die Hilfe.
Gruss Int3g3r