Smart Mobile Studio supports implicit overload, so you can both overload/override the constructor, when "override" is used, an implicit overload is accepted (but it can be explicit).
The following script reproduces this nice feature.
Smart pascal source code
{ filename: C.pas }
unit C;
interface
uses
SmartCL.System;
type
TApp = class
public
procedure DoIt;
end;
type
TCustomScene = class
private
FA: Integer;
FB: Integer;
FC: Integer;
FApp: TApp;
protected
constructor Create(App: TApp); overload;
procedure PA; virtual; abstract;
procedure PB; virtual; abstract;
procedure PC; virtual; abstract;
procedure PD; virtual; abstract;
procedure PE; virtual; abstract;
public
constructor Create; overload; virtual; abstract;
property App: TApp read FApp;
property A: Integer read FA;
property B: Integer read FB;
property C: Integer read FC;
end;
type
TMyScene = class(TCustomScene)
protected
procedure PA; override;
procedure PB; override;
procedure PC; override;
procedure PD; override;
procedure PE; override;
public
constructor Create; override;
constructor Create(a : Integer); overload;
end;
implementation
{ TApp }
procedure TApp.DoIt;
begin
WriteLn('doing it');
end;
{ TCustomScene }
constructor TCustomScene.Create(App: TApp);
begin
FApp := App;
end;
{ TMyScene }
constructor TMyScene.Create;
begin end;
constructor TMyScene.Create(a: Integer);
begin end;
procedure TMyScene.PA;
begin end;
procedure TMyScene.PB;
begin end;
procedure TMyScene.PC;
begin end;
procedure TMyScene.PD;
begin end;
procedure TMyScene.PE;
begin end;
end.
{ filename: uMain.pas }
var myScene : TMyScene;
myScene := TMyScene.Create(20);
myScene.App.DoIt; //displays 'doing it'