constructor die Parameter der Elternklasse übernehmen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Biertrinker
Beiträge: 16
Registriert: Mo 18. Mär 2013, 17:19
OS, Lazarus, FPC: MAC OSX
CPU-Target: xxBit

constructor die Parameter der Elternklasse übernehmen

Beitrag von Biertrinker »

Hallo zusammen,

ich habe mal eine verständnis Frage zum Constructor

ich habe eine Kind klasse die 3 zusätzliche Felder
zur Elternklasse hinzubekommt
Nun erstelle ich in der Kind klasse einen Constructor
mit den neuen 3 Feldern, soweit so gut

Wenn ich nun ein Objekt der Kind klasse erstelle werden
mir auch logisch nur die 3 Felder dieses Constructor vorgegeben
was so auch erstmal logisch erscheint

Frage:
ist es machbar das der Constructor der Kind klasse mir auch
die Felder der Eltern klasse mit anzeigt

So das das Objekt aus der Kind Klasse alle Felder
belegt

oder muß der Constructor der Kind klasse
auch die Felder der Eltern klasse die ich übernehmen will
eingetragen haben ?
mfg
Horst Sammler

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: constructor die Parameter der Elternklasse übernehmen

Beitrag von Winni »

Hi

Steht alles in den Docs:

https://wiki.freepascal.org/Inherited

und

https://www.freepascal.org/docs-html/ref/refsu32.html

- die "Magie" von inherited

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: constructor die Parameter der Elternklasse übernehmen

Beitrag von af0815 »

Faustregel:
Im Create zuerst das inherited, beim Destroy zuletzt das inherited, ausser du weisst genau, warum du das so nicht machst.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: constructor die Parameter der Elternklasse übernehmen

Beitrag von theo »

Ich glaube Biertrinker meint wirklich nur die Parameter.

Parent:
constructor Create(A,B,C: integer);

Abgeleitete Klasse
constructor Create(D,E: integer); override;

Jetzt soll das automatisch irgendwie
constructor Create(A,B,C,D,E: integer); override;

werden?

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: constructor die Parameter der Elternklasse übernehmen

Beitrag von fliegermichl »

Wenn Du einen als virtual deklarierten Constructor via override überschreiben willst, dann muß der genau die gleichen Parameter haben wie der aus der Elternklasse.
Man kann aber auch das überschreiben.

Code: Alles auswählen

type
 TBase = class
  constructor Create(aa, ab, ac : integer); virtual;
 end;
 
 TDerived = class ( TBase )
  constructor Create(aa, ab, ac, ae, ad : integer); reintroduce; virtual;
 end;

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: constructor die Parameter der Elternklasse übernehmen

Beitrag von Mathias »

Wen ich es richtig verstehe, wird man mit "reintroduce" gezwungen, der neue abgeleitete Constructor zu verwenden ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten