TinParent=class
end;
TParentClass=class
FinComponent:TinParent;
constructor create;
end;
TinChild=Class(TinParent)
end;
TChildClass=Class(TParentClass)
end;
implementation
constructor TParentClass.create;
begin
FinComponent:=TinParent.Create;
// hier sollte bei TChildClass dann FinComponent automatisch vom Typ TInChild sein. Kann man das hier schon implementieren? Falls ja wie ?
end;
type
tinparent = class
end;
inparentclassty = class of tinparent;
tparentclass = class
private
fincomponent: tinparent;
protected
class function getincomponentclass: inparentclassty; virtual;
public
constructor create;
end;
tinchild = class(tinparent)
end;
tchildclass = class(tparentclass)
protected
class function getincomponentclass: inparentclassty; override;
end;
{ tparentclass }
constructor tparentclass.create;
begin
fincomponent:= getincomponentclass.create;
end;
class function tparentclass.getincomponentclass: inparentclassty;
begin
result:= tinparent;
end;
{ tchildclass }
class function tchildclass.getincomponentclass: inparentclassty;
begin
result:= tinchild;
end;
type
tinparent = class
end;
inparentclassty = class of tinparent;
tparentclass = class
private
fincomponent: tinparent;
protected
function createincomponent: tinparent; virtual;
public
constructor create;
end;
tinchild = class(tinparent)
end;
tchildclass = class(tparentclass)
protected
function createincomponent: tinparent; override;
end;
{ tparentclass }
constructor tparentclass.create;
begin
fincomponent:= createincomponent;
end;
function tparentclass.createincomponent: tinparent;
begin
result:= tinparent.create;
end;
{ tchildclass }
function tchildclass.createincomponent: tinparent;
begin
result:= tinchild.create;
end;