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