在Delphi里,用父类的数组存储子类的对象会丢失子类的信息吗(200分)

  • 主题发起人 主题发起人 coolnet
  • 开始时间 开始时间
C

coolnet

Unregistered / Unconfirmed
GUEST, unregistred user!
如果声明一个父类的数组,里面存储不同的子类对象,到取出对象的时候还能存取子类特有
的属性吗?
 
you can try it ,then you will get answer
 
存储不是问题,信息不会丢失的,引用的时候使用子类的类型转换就可以使用子类的全部特性了!
最典型的是Form下的Components,是TComponent类的数组, TComponent是父类,Form下的Button
是子类但一样可以用Components数组来引用如:

for i := 0 to Form1.ComponentCount -1 do
begin
if Components is Tbutton then
TButton(Components).Caption := '按钮'+IntToStr(i);//TComponent没有Caption这个属性,
//但强制将TComponent数组的成员转换成Tbutton后就有了!
end;
 
再这样下去 大家都不思考了
 
无法想像如果会丢失子类的属性会是什么结果,COM类转化为接口的话其不是全部为空
 
OK,我Try了一下,结果是可以保存,多谢!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
I
回复
0
查看
659
import
I
后退
顶部