type
TFigure = class
procedure Draw;
end;
TRectangle = class(TFigure)
procedure Draw;
end;
...
var
Figure: TFigure;
Rectangle: TRectangle;
begin
...
Fingure := TRectangle.Create; *1
...
TRectangle(Fingure).XXX; *2
...
end;
*1
TRectangle作为TFingure的子类,是TFingure的扩充,那用TRectangle创建对象赋给Fingure不是意味着TRectangle扩充的数据被丢失了吗?
*2
把Fingure强制类型转换成TRectangle,那TRectangle扩充的数据(包括函数和方法)是如何处理的呢?总之,子类应该包含(或覆盖)父类的数据,当这两者进行类型转换的时候,他们的数据是如何处理的,鄙人实在是菜鸟一个,连这么一个简单的问题都搞不清楚,sigh
TFigure = class
procedure Draw;
end;
TRectangle = class(TFigure)
procedure Draw;
end;
...
var
Figure: TFigure;
Rectangle: TRectangle;
begin
...
Fingure := TRectangle.Create; *1
...
TRectangle(Fingure).XXX; *2
...
end;
*1
TRectangle作为TFingure的子类,是TFingure的扩充,那用TRectangle创建对象赋给Fingure不是意味着TRectangle扩充的数据被丢失了吗?
*2
把Fingure强制类型转换成TRectangle,那TRectangle扩充的数据(包括函数和方法)是如何处理的呢?总之,子类应该包含(或覆盖)父类的数据,当这两者进行类型转换的时候,他们的数据是如何处理的,鄙人实在是菜鸟一个,连这么一个简单的问题都搞不清楚,sigh
解决方案 »
- Delphi可以用C#编写win32程序么?
- 定位问题(集)
- 请问怎样把string转化成UTF8编码??比如将"中国"转化为:"%E4%B8%AD%E5%9B%BD"..
- 我的表table中“维修费”字段为 varchar 类型如何用sum函数统计
- DELPHI 难学吗
- ‖‖‖无窗体的GetIEFromHWND 报错在线等!请各位高人求解!
- 请各位大侠不惜赐教!用textout()在image上批量产生的文字,如何用鼠标移动?我快要疯了!
- 如何在DELPHI中打了回车键或‘上下箭头键’,焦点按顺序跳至不同控件上,谢
- 请教
- 有谁能告诉我 TeamSource 怎么用吗?
- 大家新年好,小弟初学,急问一个窗体问题,求各位大人解答!拜谢!!!
- 关于sql语句处理记录集的问题(在线)
*2会出现问题,当你创建的是父类的实例,却访问子类扩展的属性,会因为找不到对应的地址而出错总之,记住创建的是谁的实例,向上的转化是安全的。变量只不过保存的是对该实例的引用(指针)而已