类-属性

​ 一个类中的属性定义了由这个类产生的对象的特征,这种特征能影响对象的可视化行为或者对它的操作。例如对一个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;
posted @   德琪  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示