捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >基础知识 > 正文
15 2020.02

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

点击次数:319 更新时间:2020-2-15 22:23:24  【打印此页
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

  //TMyClass1 类里面只有两个字段(变量来到类里面称做字段)
  TMyClass1 = class
    FName: string;  {字段命名一般用 F 开头, 应该是取 field 的首字母}
    FAge:  Integer; {另外: 类的字段必须在方法和属性前面}
  end;
  {这个类中的两个字段, 可以随便读写; 在实际运用中, 这种情况是不存在的.}


  //TMyClass2 类里面包含两个属性(property)、两个方法、两个和 TMyClass1 相同的字段
  TMyClass2 = class
  strict private
    FName: string;
    FAge:  Integer;
    procedure SetAge(const Value: Integer);
    procedure SetName(const Value: string);
  published
    property Name: string  read FName write SetName;
    property Age:  Integer read FAge  write SetAge;
  end;
  {
    但这里的字段: FName、FAge 和方法: SetAge、SetName 是不能随便访问的,
    因为, 它们在 strict private 区内, 被封装了, 封装后只能在类内部使用.

    属性里面有三个要素:
    1、指定数据类型: 譬如 Age 属性是 Integer 类型;
    2、如何读取: 譬如读取 Age 属性时, 实际上读取的是 FAge 字段;
    3、如何写入: 譬如希尔 Age 属性时, 实际上是通过 SetAge 方法.

    属性不过是一个桥.

    通过属性存取字段 和 直接存取字段有什么区别?
    通过属性可以给存取一定的限制,
    譬如: 一个人的 age 不可能超过 200 岁, 也不会是负数; 一个人的名字也不应该是空值.

    看 implementation 区 TMyClass2 类的两个方法的实现, 就增加了这种限制.
   }

var
  Form1: TForm1;

implementation

{$R *.dfm}


{ TMyClass2 }

procedure TMyClass2.SetAge(const Value: Integer);
begin
  if (Value>=0) and (Value<200) then
    FAge := Value;
end;

procedure TMyClass2.SetName(const Value: string);
begin
  if Value<>'' then
    FName := Value;
end;


//测试:
procedure TForm1.Button1Click(Sender: TObject);
var
  class1: TMyClass1;
  class2: TMyClass2;
begin
  class1 := TMyClass1.Create;
  class2 := TMyClass2.Create;

  class1.FAge := 1000; {TMyClass1 中的 FAge 字段可以接受一个离奇的年龄}
  class2.Age  := 99;   {通过 TMyClass2 中的 Age 属性, 只能赋一个合理的值}
  //class2.FAge := 99; {TMyClass2 中的 FAge 字段被封装了, 在这里无法使用}

  class1.Free;
  class2.Free;
end;

end.
Tips
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:319 更新时间:2020-2-15 22:23:24  【打印此页
关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修