Ja, das ist so.
Du kannst das wie folgt umgehen:
Delphi-Quellcode:
//weiter:
procedure TBlub.Initialize(); //override
begin
DoInitialize(Self);
end;
procedure TBlub.DoInitialize(const blb: IBlub2);
begin
Self.Egal := irgeeinservice.CreateEtwas(blbl);
end;
oder alternativ
Delphi-Quellcode:
//weiter:
procedure TBlub.Initialize(); //override
var blbl: IBlub2;
begin
blb := Self as IBlub2; //Hier erhöht sich der Referenzzähler
Self.Egal := irgeeinservice.CreateEtwas(blbl);
blbl := Nil; //Hier erniedrigt sich der Referenzzähler
end;
procedure TBlub.AfterConstruction();//override
begin
// Call AfterConstruction of base class
inherited; //Da drin geht der Referenzzähler auf 0
// Initialize member of descendant class
//self.Initialize();
//...
end;
constructor TBlub.Create;
begin
inherited;
Self.Initialize();
end;
Was dein Kollege meint ist schon richtig, du machst es aber nicht richtiger, wenn du den Code nur in anderen Methoden verlagerst und diese trotzdem im Rahmen des Konstruktors ausführst. Dadurch wird der Konstruktor der Klasse selber nicht schlanker, denn der Code wird ja trotzdem ausgeführt. Es ist einfach nur Augenwischerei.