继承问题(40分)

  • 主题发起人 主题发起人 yyw
  • 开始时间 开始时间
Y

yyw

Unregistered / Unconfirmed
GUEST, unregistred user!
我的子类继承了父类的Constructor构造方法
但是我创建子类实例时,却没有调用子类的构造方法
而是直接调用父类的构造方法?

请大侠指教!谢谢
 
不可能呀,把代码提出来看看[:)]
 
在父类中,我的继承的是TGraphicControl
构造函数声明为
constructor create(AOwner:TComponent;outputCanvas:TCanvas);virtual;
....
然后我在子类中覆盖父类的构造方法
constructor create(AOwner:TComponent;outputCanvas:TCanvas);override;
....
child:=TChild.create(...);

问题出现在我创建一个子类的对象实例时
没有去调用子类的构造方法
 
完整代码
 
你是说在创建时还是运行时?
 
看到没有,父类的构建是virtual的,在子类中必须实现这个方法
 
to pipi:完整代码太长了,
Tparent=class(TGraphicControl)
....
constructor create(AOwner:TComponent;outputCanvas:TCanvas);virtual;
....
end;
Tchild=class(TParent)
....
constructor create(AOwner:TComponent;outputCanvas:TCanvas);override;
....
end;
implementation
constructor Tparent.create(AOwner:TComponent;outputCanvas:TCanvas);
begin
inherited create(AOwner);
....
end;

constructor Tchild.create(AOwner:TComponent;outputCanvas:TCanvas);
begin
inherited create(AOwner,outputCanvas);
....
end;
然后我在外面创建TChild的实例,
发现执行child=TChild.create(self,Canvas);语句只调用
Tparent类的create方法.
 
问题找到了,是发生笔误了,导致construcor方法在子类的private中
谢谢各位富翁的关注.
问题结束,虽然分数不多,聊表谢意
 
后退
顶部