文档

动态属性-向实例添加属性

什么是动态属性

类派生的类的实例中添加属性dynamicprops类。这些动态属性有时被称为实例属性。使用动态属性将临时数据附加到对象上,或者为想要与类的实例关联的数据赋值,但不是与该类的所有对象关联。

一个以上的程序可以在同一个对象上定义动态属性。在这些情况下,避免名称冲突。动态属性名称必须是有效的MATLAB®标识符(见变量名),且不能与类的方法同名。

动态特性

一旦定义,动态属性的行为很像类定义的属性:

  • 使用点表示法设置和查询动态属性值。(见将数据分配给动态属性。)

  • 当您保存和加载所附加的对象时,MATLAB会保存和加载动态属性。(见动态属性和ConstructOnLoad。)

  • 为动态属性定义属性。(见设置动态属性).

  • 当您保存具有动态属性的对象时,MATLAB不保存属性属性值。因此,加载对象时不会保留任何非默认属性设置。(见保存和加载动态属性。)

  • 默认情况下,动态属性有它们的NonCopyable属性设置为真正的。如果复制包含动态属性的对象,则不会复制该动态属性。(见具有动态属性的对象

  • 添加属性集和获取访问方法。(见从属属性的访问方法。)

  • 监听动态属性事件。(见动态属性事件。)

  • 使用受限制的语法从对象数组访问动态属性值。(见访问数组中的动态属性。)

  • isequal函数总是返回在比较具有动态属性的对象时,即使这些属性具有相同的名称和值。要比较包含动态属性的对象,请重载isequal为了你的课。

定义动态属性

类的子类的任何类dynamicprops类(它本身是处理类)可以使用addprop方法。语法是:

P = addprop(H,PropertyName

地点:

P是一个数组元。DynamicProperty对象

H是句柄数组吗

PropertyName是要添加到每个对象的动态属性的名称吗

动态属性

在命名动态属性时,只使用有效的名称(参见变量名).此外,使用这样的名字:

  • 是否与类方法的名称相同

  • 是否与类事件的名称相同

  • 包含句号(

设置动态属性

要设置属性属性,请使用元。DynamicProperty对象与动态属性关联。例如,如果P返回的对象是什么addprop,该语句设置属性的隐藏的属性来真正的

P.Hidden = true;

属性属性常数摘要对动态属性没有意义。将这些属性的值设置为真正的没有效果。

删除动态属性

通过删除其属性来删除动态属性元。DynamicProperty对象:

删除(P);

将数据分配给动态属性

假设您正在使用一组预定义的用户界面小部件类(按钮、滑块、复选框等)。您希望存储小部件类的每个实例的位置。假设小部件类不是为存储特定布局方案的位置数据而设计的。您希望避免创建映射或散列表来单独维护这些信息。

假设按钮类的子类dynamicprops,添加一个动态属性来存储布局数据。下面是一个简单的类uicontrol按钮:

classdef按钮< dynamicprops属性UiHandle结束方法函数Obj = button(pos)如果Nargin b> 0如果长度(pos) == 4 obj。UiHandle = uicontrol(“位置”、pos、“风格”“按钮”);其他的错误(“位置不当”结束结束结束结束结束

的实例按钮类,添加一个动态属性,并设置它的值:

B1 = button([20 40 80 20]);b1.addprop (“myCoord”);b1.myCoord= [2,3];

像访问任何其他属性一样访问动态属性,但只能在你定义它的对象上访问:

b1.myCoord
Ans = 2 3

动态属性的访问属性

不建议对动态属性使用非公共访问,因为这些属性属于通常在类方法之外创建的特定实例。动态属性的访问属性a应用于包含动态属性的实例的类。动态属性Access属性不一定应用于其方法添加动态属性的类。

例如,如果基类方法向实例添加具有私有访问权限的动态属性,则私有访问权限仅适用于该实例的类。

有关动态属性属性的详细信息,请参见元。DynamicProperty

相关的话题

这个话题有帮助吗?