Delphi: How to add a different constructor to a descendant?

后端 未结 4 2142
深忆病人
深忆病人 2020-12-16 22:32

Update: The example i originally had was kind of complex. Here\'s a simple 8 line example that explains everything in one code block. The following

4条回答
  •  春和景丽
    2020-12-16 23:28

    My immediate reaction is to use the overload keyword, as in:

    TCellPhone = class(TComputer)
    public
        constructor Create(Cup: Integer; Teapot: string); reintroduce; overload; virtual;
    end;
    

    Edit: Thanks Ian for the edit, which makes an answer out of my answer. I would like to think that I got it for bravery, so I am going to contribute a fuller example:

    program Project1;
    
    {$APPTYPE CONSOLE}
    
    uses
      SysUtils;
    
    type
    
    TComputer = class(TObject)
    public
        constructor Create(Cup: Integer); virtual;
    end;
    
    TCellPhone = class(TComputer)
    public
        constructor Create(Cup: Integer; Teapot: string); reintroduce; overload; virtual;
    end;
    
    { TComputer }
    
    constructor TComputer.Create(Cup: Integer);
    begin
      writeln('constructed computer: cup = ', Cup);
    end;
    
    { TCellPhone }
    
    constructor TCellPhone.Create(Cup: Integer; Teapot: string);
    begin
      inherited Create(Cup);
      writeln('constructed cellphone: Teapot = ', Teapot);
    end;
    
    var
      C1, C2, C3: TComputer;
    
    begin
      C1 := TComputer.Create(1);
      Writeln;
      C2 := TCellPhone.Create(2);
      Writeln;
      C3 := TCellPhone.Create(3, 'kettle');
      Readln;
    end.
    

    with the result being:

    constructed computer: cup = 1
    
    constructed computer: cup = 2
    
    constructed computer: cup = 3
    constructed cellphone: Teapot = kettle
    

提交回复
热议问题