Delphi的学习笔记十三——属性1
2013-01-10 18:47
369 查看
首先我们来看一下属性的定义:
2、read、write 两个关键字至少要存在一个, 如果只有一个就成了只读属性或只写属性;
3、属性名后面也要指定类型(必须是内置类型或定义在前面的类型), 存取的类型必须要和它一致;
4、属性用到的字段与方法一定要声明在属性前面;
5、如果属性读(read)的是方法, 那么这个方法一定是个函数, 且返回值与属性类型一致;
如果属性是非数组属性, 该函数是无参数的, 譬如: function GetName: string;
6、如果属性写(write)的是方法(一般也不会是字段), 那么这个方法一定是个过程;如果属性是非数组属性, 该过程必须只有一个参数, 参数类型必须和属性一致; 并且参数必须是传值的; 譬如: procedure SetName(s: string); 或者 procedure SetName(const s: string);
7、属性调用的方法不能是虚方法或动态方法; 不能是重载方法;
8、如果属性在 published 区, 那它调用的方法只能使用默认的 register 调用约定;
9、属性一般放在 published 区, 如果属性不是公开的也就失去了属性的意义;
10、如果自定义的类不需要 RTTI 或许把属性放到 public 区会更节省(个人认为);
11、属性读写的变量或方法一般放在 private 区, 如果都公开了就用不着属性了;
12、事件属性读写的必须是方法, 不能是变量;
13、属性只是一个桥, 它没有指针(它读写的变量和方法才有指针), 目的是方便存取并提出存取限制;
14、还有 Delphi 的 IDE 为书写属性提供了非常方便的快捷键, 譬如: 输入: property Name: string; 然后执行 Ctrl+Shift+C
TMyClass = class(TObject) private FName: string; procedure SetName(const Value: string); published property Name: string read FName write SetName; end;
2、read、write 两个关键字至少要存在一个, 如果只有一个就成了只读属性或只写属性;
3、属性名后面也要指定类型(必须是内置类型或定义在前面的类型), 存取的类型必须要和它一致;
4、属性用到的字段与方法一定要声明在属性前面;
5、如果属性读(read)的是方法, 那么这个方法一定是个函数, 且返回值与属性类型一致;
如果属性是非数组属性, 该函数是无参数的, 譬如: function GetName: string;
6、如果属性写(write)的是方法(一般也不会是字段), 那么这个方法一定是个过程;如果属性是非数组属性, 该过程必须只有一个参数, 参数类型必须和属性一致; 并且参数必须是传值的; 譬如: procedure SetName(s: string); 或者 procedure SetName(const s: string);
7、属性调用的方法不能是虚方法或动态方法; 不能是重载方法;
8、如果属性在 published 区, 那它调用的方法只能使用默认的 register 调用约定;
9、属性一般放在 published 区, 如果属性不是公开的也就失去了属性的意义;
10、如果自定义的类不需要 RTTI 或许把属性放到 public 区会更节省(个人认为);
11、属性读写的变量或方法一般放在 private 区, 如果都公开了就用不着属性了;
12、事件属性读写的必须是方法, 不能是变量;
13、属性只是一个桥, 它没有指针(它读写的变量和方法才有指针), 目的是方便存取并提出存取限制;
14、还有 Delphi 的 IDE 为书写属性提供了非常方便的快捷键, 譬如: 输入: property Name: string; 然后执行 Ctrl+Shift+C
相关文章推荐
- Delphi的学习笔记十三——属性
- Delphi的学习笔记十三——属性1
- 属性—Swift学习笔记(十三)
- WPF and Silverlight 学习笔记(十三):依赖项属性和路由事件
- Angular学习笔记(十三)之组件通讯输入/输出属性
- WPF and Silverlight 学习笔记(十三):依赖项属性和路由事件
- WPF and Silverlight 学习笔记(十三):依赖项属性和路由事件
- WCF学习笔记(二)使用Name等属性和数据契约
- Delphi的学习笔记七——格式化输出函数(总结的很全面)
- [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间
- Android开发学习笔记:EditText的属性介绍
- Android开发学习笔记:Intent的简介以及属性的详解
- XML学习笔记(二): 读取元素、属性和内容值
- python 系统学习笔记(十三)---lambda
- (转)delphi chrome cef3 控件学习笔记 (五)
- DELPHI学习笔记--使用通配符进行模糊查询
- Android开发秘籍学习笔记(十三)
- Java学习笔记(十三):回调
- Struts2.x 学习笔记 之 类型转换与复杂属性
- 学习《Oracle 9i10g编程艺术》的笔记 (十三) 索引