目录
使用属性的方式
什么是属性
属性对属于类实例的数据进行封装。属性中包含的数据可以是公共的、受保护的或私有的。这些数据可以是一组固定的常量值,也可以依赖于其他值,并且仅在查询时计算。要控制属性行为的以上方面,可以设置属性特性,定义特定于属性的访问方法。
对象属性的灵活性
在某些方面,属性就像 struct 对象的字段。然而,在对象属性中存储数据提供了更大的灵活性。属性可以:
-
定义在类定义之外无法更改的常量值。参考定义具有常量值的类属性。
-
基于其他数据的当前值计算属性值。参考属性get方法。
-
执行函数来确定所尝试的赋值是否满足特定条件。参考属性set方法。
-
当尝试获取或设置属性值时,触发事件通知。参考属性set和查询时间参考属性set和查询事件。
-
通过代码控制对属性值的访问。参考SetAccess 和 GetAccess 属性属性特性。
-
控制属性值是否与对象一起保存在 MAT 文件中。参考保存和加载对象请参阅保存和加载对象。
属性的类型
属性有两种类型
-
存储属性 - 占用内存,并且是对象的一部分
-
从属属性 - 不占用内存,get 访问方法会在查询时计算其属性值
存储属性的特征
-
当将对象保存到 MAT 文件时,属性值也被存储
-
可以在类定义中为其指定默认值
-
可以将属性值限制为特定的类和大小
-
可以执行验证函数来控制允许的属性值(默认值和所赋的值)
-
设置时可以使用 set 访问方法来控制可能的值
何时使用存储属性
-
需要将属性值保存在 MAT 文件中
-
属性值不依赖于其他属性值
从属属性的特征
从属属性节省内存,因为依赖于其他值的属性值仅在需要时才计算。
何时使用从属属性
如果要执行以下操作,请将属性定义为从属属性:
-
根据其他值计算属性值(例如,可以根据 Width 和 Height 属性计算面积)。
-
提供一个格式随其他值变化的值。例如,普通按钮的大小值由其 Units 属性的当前设置决定。
-
提供一个标准接口,根据其他值决定是否使用其中某一属性。例如,视计算机平台不同,工具栏上可以具有不同组件。