属性特性
属性特性的目的
您可以在类定义中指定特性以便为特定目的自定义属性的行为。通过设置特性来控制属性的特征,例如访问权限、数据存储和可见性。子类不继承超类成员特性。
指定属性特性
在 properties
关键字的同一行为属性特性赋值。
properties (Attribute1 = value1, Attribute2 = value2,...) ... end
例如,定义一个具有 private
访问权限的属性 Data
。
properties (Access = private) Data end
对于值为 true
的属性,可以使用更简单的语法。属性名称本身意味着 true,在名称中添加逻辑非运算符 (~) 意味着 false。例如,此模块定义抽象属性。
properties (Abstract)
...
end
属性特性表
所有属性都支持下表中列出的特性。特性值适用于 properties...end
代码块中定义的所有属性,该代码块用于指定非默认值。未显式定义的属性采用其默认值。
属性特性
特性 | 值 | 其他信息 |
---|---|---|
|
| 对于句柄类,将 有关详细信息,请参阅Assignment When Property Value Is Unchanged。 |
|
| 抽象属性不能定义设置或访问方法。请参阅属性访问方法。 抽象属性不能定义初始值。 密封类无法定义抽象成员。 |
|
| 使用 将 有关详细信息,请参阅 类成员访问。 |
|
| 子类会继承常量属性,但不能更改常量属性。 常量属性也无法定义为从属属性。 对于常量属性,会忽略 有关详细信息,请参阅定义具有常量值的类属性。 |
|
| 您可以为从属属性定义 set 方法,但 set 方法实际上无法设置该属性的值。它可以采取其他操作,例如设置另一个属性的值。有关示例,请参阅 何时对从属属性使用 set 方法。 使用 |
|
| 将 在命令行窗口中,MATLAB 不显示具有 对于属性的 有关详细信息,请参阅 类成员访问。 |
|
| 有关详细信息,请参阅 属性 set 和查询事件。 |
|
| 在命令行窗口中,MATLAB 不显示其 Hidden 特性为 true 的属性的名称和值。但是,隐藏的属性在类图查看器中可见。 |
|
| 您只能在句柄类中将 有关详细信息,请参阅Exclude Properties from Copy。 |
| 正整数 - 定义 | 仅适用于 有关详细信息,请参阅为属性名称的部分匹配设置优先级。 |
|
| 对于属性 有关详细信息,请参阅 类成员访问、Properties Containing Objects 和 Mutable and Immutable Properties。 |
|
| 有关详细信息,请参阅 属性 set 和查询事件。 |
|
| 有关详细信息,请参阅 对象的保存和加载过程。 |
框架特性 | 使用特定框架基类的类具有特定于框架的特性。有关这些特性的信息,请参阅您正在使用的特定基类的文档。 |
属性访问列表
对于 Access
、GetAccess
和 SetAccess
特性,您可以使用 meta.class
实例的列表。例如,此类声明 Prop1
和 Prop2
属性的访问列表。
classdef PropertyAccess properties (GetAccess = {?ClassA, ?ClassB}) Prop1 end properties (Access = ?ClassC) Prop2 end end
对于 Prop1
:
类
ClassA
和ClassB
具有对Prop1
的 get 访问权限。ClassA
和ClassB
的所有子类都具有对Prop1
的 get 访问权限。访问列表不能继承,因此
PropertyAccess
的子类没有对Prop1
的 get 访问权限,除非它们显式定义该访问权限。
对于 Prop2
:
ClassC
有对Prop2
的 get 和 set 访问权限。ClassC
的所有子类都有对Prop2
的 get 和 set 访问权限。访问列表不能继承,因此
PropertyAccess
的子类没有对Prop2
的访问权限,除非它们显式定义该访问权限。