W
webworm
Unregistered / Unconfirmed
GUEST, unregistred user!
子类的对象引用可以付给父类的变量,我书上看到过,至于为什么,我也没有研究过,但是,我觉得既然创建对象是子类创建的,也就是说是子类分配内存块的(你不要晕,因为对象就是一块内存块啊)那么为什么在myobject.value时候会是integer类型,而不是在子类中重新声名的string型呢?
请看下面例子:
type
TAncestor = Class
value :integer
end
type
TDescendant = class(TAncestor)
value:integer
end
var
myobject:tAncestor
begin
myobject:=TDescendant.create
myobject.value:='hello' //error!
TDescendant(myobject).value:='hello' //works!
end
为什么myobject.value是integer类型的,按我的理解是Create之后创建的内存块中的信息应该是string型的!
请看下面例子:
type
TAncestor = Class
value :integer
end
type
TDescendant = class(TAncestor)
value:integer
end
var
myobject:tAncestor
begin
代码:
myobject.value:='hello' //error!
TDescendant(myobject).value:='hello' //works!
end
为什么myobject.value是integer类型的,按我的理解是Create之后创建的内存块中的信息应该是string型的!