类-属性
一个类中的属性定义了由这个类产生的对象的特征,这种特征能影响对象的可视化行为或者对它的操作。例如对一个TEdit组件米说,Visible属性决定了它是否能被看到,Text属性决定了文本框中的内容等,属性与数据成员的区别在于:
- 数据成员只表示存储对象中的数据的位置,而属性伴随着读或写数据的方法。
- 属性可以可视化地进行访问,而数据成员被封装在对象中,不能可视化地进行访问,只能在程序中通过对象方法访问它们。
声明格式为:
property 属性名:属性类型 read 数据成员名/方法名 write 数据成员名/方法名;
(1)访问说明
访问说明是指在属性声明中对属性值的读和写法的说明,用read来说明读方法,用write来说明写方法,一个属性至少要有一个读方法或写方法,如果只有读方法,表示该属性为只读属性,如果只有写方法,表示该属性为只写属性。说明的语法形式为:
read数据成员名/方法名
write数据成员名/方法名
Type
TMingRiClass=Class
private
FCompanyName:string;
FAddr:string;
FEmail:string;
FSort:string;
function GetAddr:string;
procedure SetAddr(const Value:string);
published
//属性的访问说明全是数据成员
property CompanyName:string read FCompanyName write FCompanyName;
property Addr::string read GetAddr Write SetAddr;//属性的访问说明全是方法
property Email::string read Femail;//只读属性
property Sort::string write Fsort;://只写属性
end;
function TMingRiClass.GetAddr:string;
begin
result:=FAddr;
end;
procedure TMingRiClass.SetAddr(const Value:string);
begin
FAddr:=value;
end;
(2)索引
索引说明用来使多个属性共用一个访问方法,因此,属性声明中访问说明必须说明的是方法,Read后面的方法必须附加一个整型的参数,Write后的过程方法必须在参数表的倒数第二个参数位置附加一个整型的参数。
type
TMingRiClass=Class
private
FPosition:array[0..2]of integer;
function getposition(const Index:integer):integer;
procedure setposition(const Index,Value:integer);
public
property left:integer index(0) read getposition write setposition;
property top:integer index(1) read getposition write setposition;
end;
implementation
{TMingRiClass}
function TMingRiClass.getposition(const Index:integer):integer;
begin
result:=FPosition[Index];
end;
procedure TMingRiClass.setposition(const Index,Value:integer);
begin
FPosition[Index]:=Value;
end;
(3)数组属性
Type
TMingRiSoft=Class
private
FValue:Array[0..1000]of string:
function GetValue(x:integer):string;
procedure SetValue(x:integer;const Value:string);
public
Property Values[x:integer]:string Read GetValue Write SetValue;/数组属性
end;
function TMingRiSoft.GetValue(x:integer):string;
begin
result:=FValue[x];
end;
procedure TMingRiSoft.SetValue(x:integer;const Value:string);
begin
FValue[x]:=Value;
end;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?