为什么80%的码农都做不了架构师?>>>   

unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;//TMyClass1 类里面只有两个字段(变量来到类里面称做字段)TMyClass1 = classFName: string;  {字段命名一般用 F 开头, 应该是取 field 的首字母}FAge:  Integer; {另外: 类的字段必须在方法和属性前面}end;{这个类中的两个字段, 可以随便读写; 在实际运用中, 这种情况是不存在的.}//TMyClass2 类里面包含两个属性(property)、两个方法、两个和 TMyClass1 相同的字段TMyClass2 = classstrict privateFName: string;FAge:  Integer;procedure SetAge(const Value: Integer);procedure SetName(const Value: string);publishedproperty 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 类的两个方法的实现, 就增加了这种限制.}varForm1: TForm1;implementation{$R *.dfm}{ TMyClass2 }procedure TMyClass2.SetAge(const Value: Integer);
beginif (Value>=0) and (Value<200) thenFAge := Value;
end;procedure TMyClass2.SetName(const Value: string);
beginif Value<>'' thenFName := Value;
end;//测试:
procedure TForm1.Button1Click(Sender: TObject);
varclass1: TMyClass1;class2: TMyClass2;
beginclass1 := 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.

转载于:https://my.oschina.net/hermer/blog/320054

理解 Delphi 的类(三) - 初识类的属性相关推荐

  1. VBA类之一(初识类)

    第一章 开头篇                                 --认识类 Visual Basic是基于对象的编程(注:本文所有的代码和讨论将都以VB为基础模型,不过我会尽量使用一些 ...

  2. 理解 Delphi 的类(四) - 初识类的事件

    先勾画一下思路: 1.建立一个类, 里面有年龄字段 FAge; 2.通过 Age 属性读写 FAge; 3.如果输入的年龄刚好是 100 岁, 将会激发一个事件, 这个事件我们给它命名为: OnHun ...

  3. 理解 Delphi 的类(七) - 认识类的多态

    什么是多态? 我的理解就是: 同样一个方法, 在不同的对象里会有不同的实现, 仅此而已. unit Unit1;interfaceusesWindows, Messages, SysUtils, Va ...

  4. ExtJS学习之路第三步:理解引擎之下,ExtJS4中的类

    写写就发现,有些代码不查查源头,不明白是怎么回事?搜到这篇文章觉得还是收益匪浅,更容易读懂代码. Classes in Ext JS 4: Under the hood Countdown to Ex ...

  5. 结合MSDN理解windows service 服务安装的三个类。

    servicebase类: 服务类从此类派生,重写方法. 一个可执行文件包含多项服务,每项服务包含单独的安装"注册服务类".服务与日志相关. 可执行文件的main()函数定义那些服 ...

  6. 初识类(classstruct)及C/C++封装的差异

    初识类(class&struct) 面向对象三大特性:封装.继承和多态.其中不得不谈的就是类,通过类创建一个对象的过程叫实例化,实例化后使用对象可以调用类成员函数和成员变量,其中类成员函数称为 ...

  7. Scala(三):类

    类:Class 1.简单类和无参方法 2.带getter和setter属性 3.只带getter属性 4.对象私有字段 5.Bean属性 6.辅助构造器 7.主构造器 8.嵌套类 1.简单类和无参方法 ...

  8. linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  9. 【C++】C++类的学习(一)——初识类

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 C++在C语言的基础上做了一些改进,使得C++具有了面向对象编程(Object Ori ...

  10. 在delphi中如何动态建立类的实例

    在面向对象语言中,用两种方法建立类的实例:静态建立和动态建立.静态建立就是在程序中显式地建立类的实例,如c1 = TClass1.Create().而动态建立是在只知道类名的前题下建立类的实例.动态建 ...

最新文章

  1. 业界丨2018年人工智能和机器学习路在何方? 看看美国公司准备怎么做
  2. javascript 生成一个一亿长度的随机数组,从中排列出最大的1000个项;
  3. hdu3342 拓扑序
  4. 函数的参数个数是不固定_EXCEL这些序号技巧,你还真不一定都知道
  5. js 判断浏览器是否滚动到底部
  6. Applese 涂颜色(欧拉降幂)
  7. 昂达v891w可以用u盘linux,昂达V891W CH Windows10(TH2)系统镜像(适用于V1版本)下载...
  8. 91卫图免费版使用步骤
  9. 计算机网络教室使用,计算机网络教室使用管理制度
  10. cad lisp 背景遮罩_单行文字转多行文字带背景遮罩
  11. three.js加载和使用纹理-specularMap使用高光贴图创建色彩鲜明的地球(vue中使用three.js77)
  12. python的中文社区
  13. 通俗地讲解目标检测中AP指标
  14. c#如何wmf图片转换成png图片_C#图片格式转换(支持bmp/gif/jpeg/png/tiff/wmf文件)
  15. 仅仅因为方法 Too Simple 就被拒稿,合理吗?
  16. 解决Windows环境下PHP连接MySQL很慢的问题
  17. JAVA调用TSC打印机打印标签(二维码,数据等)超详细!!
  18. C++各大有名库的介绍(一)
  19. Python爬虫的起点,一文轻松入门
  20. 廖雪峰 php教程,获取廖雪峰老师的Python3教程的php脚本

热门文章

  1. 智能优化算法:鸟群算法-附代码
  2. Unique Functions in MATLAB
  3. numpy的sum函数、mean函数
  4. Android透明状态栏或者渐变色状态栏
  5. 四阶龙格库塔法的基本思想_“李军班长工作法”为“卓越班组”建设注入新动力...
  6. lua脚本语言学习(一)
  7. Redis-01-NoSQL简介及Redis数据库安装
  8. android 深色主题背景适配原理剖析
  9. Android支付实践(三)之银联支付功能(客户端+服务端)
  10. html盒子中盒子排列,解析CSS的box model盒模型及其内的子元素布局控制