看看这个课程:
TTest = class(TObject) public constructor Create(A:Integer);overload; constructor Create(A,B:Integer);overload; end;
现在我们要使用类:
var test: TTest; begin test:= TTest.Create; //this constructor is still visible and usable! end;
任何人都可以帮我隐藏这个构造函数?
解决方法
只要你有重载的名为Create的构造函数,在从TObject派生时,不能隐藏无参数的TObject构造函数.
这在这里讨论:http://www.yanniel.info/2011/08/hide-tobject-create-constructor-delphi.html
如果你准备在你的类和TObject之间放置另一个类,你可以使用Andy Hausladen’s trick:
TNoParameterlessContructorObject = class(TObject) strict private constructor Create; end; TTest = class(TNoParameterlessContructorObject) public constructor Create(A:Integer);overload; constructor Create(A,B:Integer);overload; end;