千
千中元
Unregistered / Unconfirmed
GUEST, unregistred user!
因为‘寸光’的原因,一直没有认真解决OOP入门的问题(当然还有自己笨的原因)。以后如果没机会来大富翁请教,只有自己修行。现在请各位师傅领进门
程序:《D4技术内幕》P55
Type
Tparant=class(Tobject)
procedure Draw
virtual;
end;
Tchild=class(Tparant)
procedure draw
override;
end;
在第一种情况中,Draw 方法声明为虚拟的,在第二种情况中,它没有声明为虚拟的。当没有声明Draw方法为虚拟时,如将对象传递给CallDraw方法,将调用TPrarent的Draw 方法。
如果Draw方法声明为虚拟的,如将对象传递给callDraw,那么将调用Tchild的Draw方法, 即使是通过Tparant的实例调用。
=======不能理解上面的话!
我自己是这样“错误”理解程序的:
!---对象是parent:调用parent.draw
对象-->callDraw()--->对象传给draw!
!---对象是child:调用child.draw.
是不是老外说话偶不懂???
附源程序如下
程序:《D4技术内幕》P55
Type
Tparant=class(Tobject)
procedure Draw
virtual;
end;
Tchild=class(Tparant)
procedure draw
override;
end;
在第一种情况中,Draw 方法声明为虚拟的,在第二种情况中,它没有声明为虚拟的。当没有声明Draw方法为虚拟时,如将对象传递给CallDraw方法,将调用TPrarent的Draw 方法。
如果Draw方法声明为虚拟的,如将对象传递给callDraw,那么将调用Tchild的Draw方法, 即使是通过Tparant的实例调用。
=======不能理解上面的话!
我自己是这样“错误”理解程序的:
!---对象是parent:调用parent.draw
对象-->callDraw()--->对象传给draw!
!---对象是child:调用child.draw.
是不是老外说话偶不懂???
附源程序如下