Ich hab das gefühl .. ich stell nur noch Basic fragen... Trotzdem finde ich nirgends Antwort darauf.
Es geht darum Ich habe eine grund Klasse TBasic die von TObject ableitet
Diese Besitzt 2 Create Constructoren mit Parameter
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| TBasic = class(TObject) private constructor Create(); overload; public constructor Create(param1: string); overload; virtual; constructor Create(param1: string; param2: string); overload; virtual; end; |
Dann habe ich TAdvance die von TBasic ableitet.. hier ist mehr oder weniger alles Abstract.. sie darf keine eigenen Constructoren haben.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| TAdvance = class( TBasic ) private constructor Create(); public ; end; |
Dann gibt es noch TExpert die von TAdvance ableitet.. hier sollen die abgeleitete 2 Create Constructoren von TBasic zur verfgung stehen und dann weiter verarbeitet werden mit Inherit.
Aber es darf auch hier kein Default Creat zur verfügung stehen. So das man ein Objekt zwingend mit Parameter erzeugen muss
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| TExpert = class( TAdvance ) private constructor Create(); procedure doInitialize(); public constructor Create(param1: string); overload; override; constructor Create(param1: string; param2: string); overload; override; end; ....
procedure TExpert.doInitialize; begin end;
constructor TExpert.Create(param1: string); begin inherited;
doInitialize; end;
constructor TExpert.Create(param1, param2: string); begin inherited;
doInitialize; end; |
So hab ich mir das ungefähr vorgestellt 'inkl kommentar'
Jetzt zu meinen offenen fragen..
1. Muss ich bei TAdvance auch die Create(Param1)|Create(Param1,Param2) in der Deklaration angeben. damit die dann von TExpert erkannt werden damit das Kompilieren glückt? Sprich werden die nicht automatisch von TBasic übernommen?
2. Wenn das Compilieren klappt kann ich immer ein Objekt von TExpert erzeugen und zwar mit dem Default Constructor.. (laut intellisense von delphi oder wie das heisst und auch compilieren lässt es sich.. beim debugen hab ich mühe da kommt ne meldung wenn ich mit f7 rein möchet)
sprich ich kann myExpObj := TExpert.Create() ausführen.. aber das sollte nicht gehen..
Ich möchte das nur
myExpObj := TExpert.Create('param1')
myExpObj := TExpert.Create('param1','param2')
funktioniert.
Sprich muss ich da den Defaultconstructor bei TBasic etc irgendwie mit Reintroduce oder sowas betiteln?
Vielen Dank für eure Hilfe.
Gruss Chubbson
Edit: Ahja es handelt sich um Delphi 7 falls das relevant sein sollte