关于多态,请教各位大侠:(100分)

韧峰

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在编了两个类,一个TSiteModule,一个TMTMesh1d,其中TMTMesh1d由TSiteModule继承而来,在TSiteModule中定义了许多数据字段,同时定义了一个虚拟的方法Assign,赋予另一个TSiteModule变量的数据:

TSiteModule=Class
...
Public
Procedure Assign(Module:TSiteModule)
Virtual;
...

Implementation
...

procedure TSiteMoDule.Assign(Module: TSiteModule);
begin
SetDepth(Module.depth);
SetInvMDepth(Module.InvMDepth);
SetRes(Module.Res);
SetInvMRes(Module.InvMRes);
end;


TMTMesh1d=Class(TSiteModule)
...
Public
Procedure Assign(Module:TSiteModule)
Virtual;
...
Implementation

procedure TMTMesh1d.Assign(Mesh: TSiteModule);
Var
Mesh_Tem:TMTMesh1d;
begin
Inherited
//用这句话来继承基类中的同名方法赋也属于基类中的字段值
Mesh_Tem:=(Mesh As TMTMesh1d);
x:=Mesh_Tem.x;
y:=Mesh_Tem.y;
Elev:=Mesh_Tem.Elev;
Mx:=Mesh_Tem.Mx;
My:=Mesh_Tem.My;
Mh:=Mesh_Tem.Mh;
FreqsCount:=Mesh_Tem.FreqsCount;
IsSite:=Mesh_Tem.IsSite;
SetZxy(Mesh_Tem.Zxy);
SetZyx(Mesh_Tem.Zyx);
SetRxy(Mesh_Tem.Rxy);
SetRyx(Mesh_Tem.Ryx);
end;

不知道上述方法是否可行???
因为新写的类现在还没有实现,所以还不能自己马上进行试验。先请各位大侠指教则个。谢谢。
 
没问题呀...
 
TMTMesh1d=Class(TSiteModule)
...
Public
Procedure Assign(Module:TSiteModule)
override;
...
Implementation

procedure TMTMesh1d.Assign(Mesh: TSiteModule);//参数前后不一样;应该是Module
Var
Mesh_Tem:TMTMesh1d;
begin
Inherited
或 Inherited Assign(Module);
…………


 
谢谢卡色,简化了我的帖子。
呵呵,我是直接从程序中复制的。
如果没有问题就谢谢Tseug了,不过再等等吧。晚上来收贴。
 
多人接受答案了。
 
顶部