多态性、接口机制 :: uhhhuh
来源: BlogBus 原始链接: http://blogbus.com:80/blogbus/blog/diary.php?diaryid=331050 存档链接: https://web.archive.org/web/20040919180542id_/http://blogbus.com:80/blogbus/blog/diary.php?diaryid=331050
uhhhuh 读书笔记 <<<delphi中如何实现深拷贝? | 首页 | 多态性、接口机制 时间: 2004-08-16 2、多态性的实现 多态的实现应该比较简单,子类通过重载覆盖掉父类相同名称的虚拟函数即可实现根据不同情况执行不同的代码。 至于多态的好处,一方面增加了代码的可复用性,只需要简单地写下一行代码,就可以让程序执行不同的功能。另一方面方便函数命名,使具有相似功能的函数可以使用同一个名字,显得简洁,代码的可维护性也更好。 多态在delphi中的例子也实验了一下。 也许多态还有更深的内涵,留待以后再深入挖掘。 3、为什么delphi不在栈区而在堆区进行对象的分配? 因为堆的内存管理比栈灵活得多,任何时候你都可以从堆中获取(或释放)内存,我们可以按任意顺序进行,而栈的内存管理严格遵循先进后出的顺序。 4、delphi的接口机制 Delphi不支持多重继承方式,但delphi提供了一个接口机制类似于C++中的多重继承。接口机制有比较丰富的内容。目前暂时了解其实现过程,到时候再结合COM等进行更深入的学习。接口实现的完整例子如下。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type IMyInterface=interface ['{544028EA-7ED0-457F-BF59-D01C5EB4624C}'] function SayHello:string; end; TMyObject=class(TEdit,IMyInterface) function SayHello:string; end; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private procedure DoSayHello(Intf:IMyInterface); { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function TMyObject.SayHello:string; begin Result:='Hello'; end; procedure TForm1.DoSayHello(Intf:IMyInterface); begin ShowMessage(Intf.SayHello); end; procedure TForm1.Button1Click(Sender: TObject); var Obj:TMyObject; Intf:IMyInterface; begin Obj:=TMyObject.Create(Self); Intf:=(Obj as IMyInterface); DoSayHello(Intf); end; end. uhhuh 发表于 2004-08-16 09:01 引用(Trackback0) | 编辑 评论 发表评论 最后更新 多态性、接口机制 delphi中如何实现深拷贝?