相关疑难解决方法(0)

Delphi:如何隐藏祖先构造函数?

更新:用一个更简单的例子来解决问题,原来接受的答案没有回答

鉴于以下类及其祖先:

TComputer = class(TObject)
public
   constructor Create(Teapot: string='');
end;

TCellPhone = class(TComputer)
public
   constructor Create(Cup: Integer); overload; virtual;
   constructor Create(Cup: Integer; Teapot: string); overload; virtual;
end;
Run Code Online (Sandbox Code Playgroud)

现在TCellPhone有3个构造函数可见:

  • 杯子:整数
  • 杯子:整数; 茶壶:串
  • 茶壶:string =''

我该怎么做才能TCellPhone使祖先构造函数(Teapot: string = '')不可见,只留下声明的构造函数:

  • 杯子:整数
  • 杯子:整数; 茶壶:串

:通常简单的行为一个后代的构造函数隐藏了祖先:

TCellPhone = class(TComputer)
public
   constructor Create(Cup: Integer); virtual;
end;
Run Code Online (Sandbox Code Playgroud)
  • 杯子:整数

如果你保留祖先构造函数和后代,你可以将后代标记为overload:

TCellPhone = class(TComputer)
public
   constructor Create(Cup: Integer); overload; virtual;
end;
Run Code Online (Sandbox Code Playgroud)
  • 杯子:整数
  • 茶壶:string =''

在这个问题的示例代码中,Delphi误解了我的 …

delphi constructor delphi-5 constructor-chaining

11
推荐指数
3
解决办法
4150
查看次数