00 Stimmen

Delphi/Lazarus: Klasse mit verschiedenen Create Methoden

Frage von Gast | 01.11.2013 um 23:47

Ich programmiere noch nicht sehr lange und habe mich gerade daran gewagt, meine erste eigene Klasse zu erstellen. Dabei habe ich das Grundgerüst aus dem Internet besorgt, was auch alles super klappt.

Das einzige Problem ist, dass ich gerne 2 unterschiedliche Create-Methoden für meine Klasse schreiben würde. Es kann nämlich verschiedene Parameter geben, mit denen die Klasse erstellt werden kann.

Bis jetzt ist es mir nur möglich, eine einzige Create-Methode zu programmieren. Ist es überhaupt möglich mehrere innerhalb einer Klasse anzulegen oder stelle ich mir da etwas falsches vor?

AntwortenPositivNegativ
1Beste Antwort1 Stimme

Das ist kein Problem und ohne weiteres möglich.

Als Beispiel ist hier mal eine kleine Klasse, die einen Counter bereitstellt.

unit MyCounterUnit;

interface

uses
  Classes, SysUtils;

type
  TMyCounter = class
  private
    FCounter: integer;
  protected
  public
    constructor Create; overload;
    constructor Create(AStartVal: integer); overload;
    destructor Destroy; override;
    procedure Increase;
  published
    property Counter: integer read FCounter;
  end;

implementation

constructor TMyCounter.Create;
begin
  inherited Create;
  self.FCounter:=0;
end;

constructor TMyCounter.Create(AStartVal: integer);
begin
  inherited Create;
  self.FCounter:=AStartVal;
end;

destructor TMyCounter.Destroy;
begin
  self.FCounter:=0;
  inherited Destroy;
end;

procedure TMyCounter.Increase;
begin
  inc(self.FCounter);
end;

Wie man sieht, stellen wir zwei Create-Methoden zur Verfügung. Beide können dazu benutzt werden, eine Instanz der Klasse zu erstellen:

var
  Counter1, Counter2: TMyCounter;
begin
  // Variante 1 ohne Startwert
  Counter1:=TMyCounter.Create;
  Counter1.Increase;
  Counter1.Free;

  // Variante 2 mit Startwert
  Counter2:=TMyCounter.Create(10);
  Counter2.Increase;
  Counter2.Free;
end;

Beim Deklarieren mehrerer unterschiedlicher Create Methoden ist es wichtig das Schlüsselwort "overload" hinter die Deklaration zu schreiben. Ansonsten erfolgt die Deklaration genau so, wie man einzelne Create-Methoden alleine deklariert.
04.11.2013 um 17:00

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.