当前位置 : 首页 > 攻略秘籍 > 轻变传奇 > 正文

理解 Delphi 的类(三) - 初识类的属性

编辑:迷失传奇版本浏览:705时间:2023-01-20 03:59:58

属性的概念

属性是用来描述一类事务得特征的,这种特征能够运行对象的可视化行为或者对他的操作。

类的属性大致分为两种:

1)普通的数据成员属性(类属性)

typeTForm1=Class(TForm)privateVclName:string;//这里就是普通的数据成员

2)可进行读写操作的属性(对象编辑器中显示的属性)

对属性值的修改会调用相应的属性设置方法。这类属性以property关键字为标识。

属性的访问

属性的访问是指再属性声明时设置对属性读和写操作的方法。这里是用read来标识属性的读方法,用write来标识属性的写方法。语法形式如下:

read数据成员名/方法名write数据成员名/方法名{read后面一般会跟一个和属性类型相同的变量用来读取属性的值write后面一般会跟一个固定格式的过程用来设置属性的值}

“数据成员名/方法名”,如果是成员名,那么这个数据成员必须与属性的类型相同。

这两个必须是已经声明了的,可以是当前类的(这两个名必须可见),也可以是父类的(至少是protected,不能是private)

示例

unitUnit1;interfaceusesWinapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,Vcl.Controls,Vcl.Forms,Vcl.Dialogs,Vcl.StdCtrls;typeTForm1=class(TForm)Button1:TButton;procedureButton1Click(Sender:TObject);end;//TMyClass类里面包含两个属性(property)、两个方法、两个和TMyClass1相同的字段TMyClass=classstrictprivateFName:string;//类的字段必须放在属性和方法前面FAge:Integer;//字段以F开头,fieldprocedureSetAge(constValue:Integer);procedureSetName(constValue:string);publishedpropertyName:stringreadFNamewriteSetName;propertyAge:IntegerreadFAgewriteSetAge;end;{但这里的字段:FName、FAge和方法:SetAge、SetName是不能随便访问的,因为,它们在strictprivate区内,被封装了,封装后只能在类内部使用.属性里面有三个要素:1、指定数据类型:譬如Age属性是Integer类型;2、如何读取:譬如读取Age属性时,实际上读取的是FAge字段;3、如何写入:譬如希尔Age属性时,实际上是通过SetAge方法.属性不过是一个桥.通过属性存取字段和直接存取字段有什么区别?通过属性可以给存取一定的限制,譬如:一个人的age不可能超过200岁,也不会是负数;一个人的名字也不应该是空值.看implementation区TMyClass类的两个方法的实现,就增加了这种限制.}varForm1:TForm1;implementation{$R*.dfm}procedureTMyClass.SetAge(constValue:Integer);beginif(Value>=0)and(Value<200)thenFAge:=Value;end;procedureTMyClass.SetName(constValue:string);beginifValue<>''thenFName:=Value;end;//测试:procedureTForm1.Button1Click(Sender:TObject);varmyclass:TMyClass;beginmyclass:=TMyClass.Create;myclass.Age:=99;{通过TMyClass中的Age属性,只能赋一个合理的值}//class.FAge:=99;{TMyClass中的FAge字段被封装了,在这里无法使用}myclass.Free;//对象的释放。end;end.

strictprivate是Delphi7之后新增的语法,它解决了在同一单元私有成员不不保密的问题.



转载请注明出处:迷失传奇版本 ,如有疑问,请联系(如有侵权内容联系本站管理员 )。

本文地址: https://www.mishipk.com/news/71424.html

相关内容更多
    游戏视频更多
        最新游戏推荐更多