delphi中的类和对象

delphi中的类和对象

ID:10621270

大小:46.50 KB

页数:8页

时间:2018-07-07

delphi中的类和对象_第1页
delphi中的类和对象_第2页
delphi中的类和对象_第3页
delphi中的类和对象_第4页
delphi中的类和对象_第5页
资源描述:

《delphi中的类和对象》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、谈谈Delphi中的类和对象作者:佚名来源:InterNet加入时间:2004-11-25谈谈Delphi中的类和对象1.登不了大雅之堂地理解几个概念  说到类和对象,我们不能不提及这样几个概念:类,对象,实例。就我个人觉得可以这样来理解:对象指的是泛称,自然界的任何实体都可以看成一个对象;而类则是以这些对象某些特征而分成的一系列的种类;实例则是特指属于某一个类的一个对象。好啦,这些大道理我就不用多说了。不如来一个“背道而驰”的作法,我们用Delphicode来阐述这些外国人提出的一些令我们中国人不好理解的概念吧:var ABtn:TButton;定义ABt

2、n是属于TButton类的一个对象,但ABtn不能说是一个实例,因为它还没有被创建,所以我们说这是定义了一个对象,如果说定义了一个实例,多多少少有一些不够确切。:)begin ABtn:=TButton.Create(Self);//创建一个TButton的实例 ABtn.Caption:='对象'; ABtn.Free;end;2.对象是一个地地道道的指针  从物理角度来看,对象就是一段地址空间,这段地址空间的标志就是我们定义的类“变量”。所以我们可以把对象看成一个类的指针。大家知道,要访问一个指针就必须对指针初始化。对象的既然是一个指针,也必须对它进行初

3、始化。如何初始化呢?还是说指针的初始化吧。对于一个指针可以有以下两种方法来进行初始化:(一)直接分配var Pint:^Integer;begin new(Pint); Pint^:=12; Dispose(Pint);end;(二)指向别的已分配空间的变量var Pint:^Integer; i:integer;begin i:=12; Pint:=@i;end;有趣的是,对象这种“指针”也有两种方法初始化(一)直接分配var AForm:TForm;begin AForm:=TForm.Create(Self); AForm.ShowModal; AFo

4、rm.Free;end;(二)指向别的已分配空间的实例var AForm:TForm;begin AForm:=Self; AForm.Caption:='知道了吗?为什么会这样呢';end;file://这个AForm和它所指向的Form实例共用同一段地址单元,所有对AForm操作都将反应file://到它所对应的Form实例之上。说到这,我们就很好解释为什么过程(函数)的对象参数传递时,象这样这的格式:(一)procedureSetEdit(varEdit:TEdit);   begin     Edit.Text:='11';   end;和(二)pr

5、ocedureSetEdit(Edit:TEdit);   begin     Edit.Text:='11';   end;效果是一样的了。(一)是把一个TEdit实体作为参数引用的形式进行参数传递,(二)是把一个TEdit的对象“指针”作为参数传递。3.类可以理解成一种特殊的数据类型   我们知道数据类型可以进行强制类型转化,类即然可以理解成一种数据类型,那么它也应该可以进行类类型转。比方如下代码为一个按钮(Button1)的单击事件:(一)procedureTForm1.Button1Click(Sender:TObject);var ACaption

6、:String;begin ACaption:=TButton(Sender).Caption;//Sender从TObject转化到TButton ShowMessage(Format('Youclicked''%s''!',[ACaption]));end;在这段代码中,Sender是一个TObject型对象,我们把它强制转化为TButton类型。如你看得不清楚,可以参照一下我们通常的数据类型的转化:(二)procedureTForm1.Button1Click(Sender:TObject);var S_Str:String; P_Str:PChar;

7、begin S_Str:='IloveChina!'; P_Str:=PChar(S_Str); S_Str:=''; S_Str:=String(P_Str); ShowMessage(S_Str);end;但是在面对对象的程序设计过程中,强调的是安全性,如(一)的强制类型转化存在着不安全性。如下的代码,依然是写Button1.OnClick事件:(三)procedureTForm1.Button1Click(Sender:TObject);begin TCanvas(Sender).Brush.Color:=clRed;end;执行一下,就会出错。这样岂

8、不是违背了面对对象的程序设计的宗旨了吗?没有,即然是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。