下面的控制台应用程序的输出是
Parent
Parent
Parent
Run Code Online (Sandbox Code Playgroud)
代替
Parent
Child1
Child2
Run Code Online (Sandbox Code Playgroud)
为什么会这样?此外,如何获得预期的输出?非常感谢 !
PS:看完这篇相关的SO帖后仍然没有线索......
program Project1;
{$APPTYPE CONSOLE}
type
TParent = class;
TParentClass = class of TParent;
TParent = class
public
ID: string;
constructor Create;
end;
TChild1 = class(TParent)
public
constructor Create;
end;
TChild2 = class(TParent)
public
constructor Create;
end;
constructor TParent.Create;
begin
ID := 'Parent';
end;
constructor TChild1.Create;
begin
ID := 'Child1';
end;
constructor TChild2.Create;
begin
ID := 'Child2';
end;
procedure Test(ImplClass: TParentClass);
var
ImplInstance: TParent;
begin
ImplInstance := ImplClass.Create; …Run Code Online (Sandbox Code Playgroud)