主要内容

动态属性 - 将属性添加到实例

什么是动态属性

您可以为来自派生的类的实例添加属性动态备注班级。这些动态属性有时被称为实例属性。使用动态属性将临时数据附加到对象或分配要与类的实例关联的数据,但不是该类的所有对象。

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

动态特性的特征

一旦定义,动态属性就像类定义的属性一样:

定义动态属性

任何属于子类的课程动态备注班级(这本身就是一个子类处理类)可以使用该类别定义动态属性addprop.方法。语法是:

p = addprop(h,'propertyname.'

在哪里:

P.是一系列的meta.dynamicproperty.对象

H是一系列手柄

propertyname.是您为每个对象添加的动态属性的名称

命名动态属性

命名动态属性时仅使用有效名称(参见变量名称)。此外,不要使用以下名称:

  • 与类方法的名称相同

  • 与类活动的名称相同

  • 包含一段时间(

  • 是支持数组功能的函数的名称:金宝app空的翻倒ctranspose.换乘重塑展示disp细节, 要么种类

设置动态属性属性

要设置属性属性,请使用meta.dynamicproperty.与动态属性关联的对象。例如,如果P.是返回的对象addprop.,此语句设置了属性归因于真的

p.hidden = true;

属性属性持续的抽象的没有任何意义动态属性。将这些属性的值设置为真的没有效果。

删除动态属性

删除其删除动态属性meta.dynamicproperty.目的:

删除(p);

将数据分配给动态属性

假设,您使用的是预定义的用户界面窗口窗口小部件(按钮,滑块,复选框等)。您希望存储窗口小部件类别的每个实例的位置。假设窗口小部件类不设计用于存储特定布局方案的位置数据。您希望避免创建地图或哈希表以单独维护此信息。

假设这一点按钮班级是一个子类动态备注,添加动态属性以存储布局数据。这是一个创建一个简单的类UICONTROL.按钮:

Classdef.按钮特性uihandle.结尾方法功能obj =按钮(POS)如果nargin> 0.如果长度(pos)== 4 obj.uihandle = UIControl('位置',pos,......'风格''按钮');别的错误('位置不正确'结尾结尾结尾结尾结尾

创建一个实例按钮类,添加动态属性,并设置其值:

B1 =按钮([20 40 80 20]);b1.addprop('mycoord');b1.mycoord = [2,3];

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

B1.Mycoord.
ans = 2 3

用于动态属性的Access属性

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

例如,如果基类方法使用对实例的私有访问添加动态属性,则私有访问仅适用于实例的类。

有关动态属性属性的更多信息,请参阅meta.dynamicproperty.。使用句柄findprop.得到的方法meta.dynamicproperty.目的。

列出对象动态属性

您可以使用句柄列出对象的动态属性findprop.方法。以下是步骤:

  • 使用使用的对象属性的名称特性功能。

  • 使用每个属性获取元数据对象findprop.

  • 使用isa.函数来确定元数据对象是否是一个meta.dynamicproperty.目的。如果是这样,则属性是动态属性。

getdynamicpropnames.功能显示如何显示为输入定义的任何动态属性的名称obj.

功能getdynamicpropnames(obj)%找到动态属性AllProps =属性(OBJ);为了i = 1:numel(allprops)m = findprop(obj,allprops {i});如果是,'meta.dynamicproperty')disp(m.name)结尾结尾结尾

相关话题