GB
Size: a a a
GB
VA
GB
GB
GB
VA
type
ITest = interface
procedure Test();
end;
TTest1 = class(TInterfacedObject, ITest)
procedure Test();
end;
TTest2 = class(TTest1, ITest)
procedure Test();
end;
TTest<T: TTest1, constructor> = class(TObject)
FTest: ITest;
procedure TestIt();
end;
procedure TTest1.Test();
begin
WriteLn('1');
end;
procedure TTest2.Test();
begin
WriteLn('2');
end;
procedure TTest<T>.TestIt();
begin
FTest := T.Create;
FTest.Test();
readln;
end;
begin
with TTest<TTest2>.Create do
TestIt();
end.
GB
type
ITest = interface
procedure Test();
end;
TTest1 = class(TInterfacedObject, ITest)
procedure Test();
end;
TTest2 = class(TTest1, ITest)
procedure Test();
end;
TTest<T: TTest1, constructor> = class(TObject)
FTest: ITest;
procedure TestIt();
end;
procedure TTest1.Test();
begin
WriteLn('1');
end;
procedure TTest2.Test();
begin
WriteLn('2');
end;
procedure TTest<T>.TestIt();
begin
FTest := T.Create;
FTest.Test();
readln;
end;
begin
with TTest<TTest2>.Create do
TestIt();
end.
VA
GB
GB
VA
GB
VA
type
ITest = interface
procedure Test();
end;
TTest1 = class(TInterfacedObject, ITest)
procedure Test();
end;
TTest2 = class(TTest1, ITest)
procedure Test();
end;
TTest<T: ITest> = class(TObject)
FTest: T;
constructor Create(ATest: T);
procedure TestIt();
end;
procedure TTest1.Test();
begin
WriteLn('1');
end;
procedure TTest2.Test();
begin
WriteLn('2');
end;
constructor TTest<T>.Create(ATest: T);
begin
FTest := ATest;
end;
procedure TTest<T>.TestIt();
begin
FTest.Test();
readln;
end;
begin
with TTest<ITest>.Create(TTest2.Create) do
TestIt();
end.
да, только FTest: T
;?GB
type
ITest = interface
procedure Test();
end;
TTest1 = class(TInterfacedObject, ITest)
procedure Test();
end;
TTest2 = class(TTest1, ITest)
procedure Test();
end;
TTest<T: ITest> = class(TObject)
FTest: T;
constructor Create(ATest: T);
procedure TestIt();
end;
procedure TTest1.Test();
begin
WriteLn('1');
end;
procedure TTest2.Test();
begin
WriteLn('2');
end;
constructor TTest<T>.Create(ATest: T);
begin
FTest := ATest;
end;
procedure TTest<T>.TestIt();
begin
FTest.Test();
readln;
end;
begin
with TTest<ITest>.Create(TTest2.Create) do
TestIt();
end.
да, только FTest: T
;?VA
GB
GB
VA
GB
VA