主要内容

属性获取和设置方法

您可以定义属性MATLAB的get和set方法®调用时自动访问相关联的属性。把获取或设置方法和一个给定的属性,使用形式的get和set方法名称得到的。PropertyName集。PropertyName,分别。

获取和设置方法可以执行额外的步骤不仅仅是访问属性。使用方法:

  • 计算的值依赖属性。

  • 以不同的格式存储数据比你呈现给用户。

使用设置方法:

  • 设计属性验证这是更复杂的比内置的验证技术支持。金宝app

  • 问题的自定义错误消息。

  • 执行操作的属性值变化的直接结果,如与硬件设备建立或更新连接或打开文件,确保对资源的访问。

获取和设置方法添加开销你类。避免复杂的get和set方法和computation-heavy操作频繁访问的属性。

请注意

你不能叫这个话题直接描述的get和set方法。MATLAB访问属性值时自动调用这些方法。为实现user-callable信息获取和设置方法,明白了实现设置/获取接口的属性

属性得到方法

您可以定义一个get方法,MATLAB自动调用相关的查询属性值。get方法必须返回属性值。Get方法使用这个语法,PropertyName属性的名称。

方法函数值=。PropertyName(obj)…结束结束

块定义方法获取或设置方法不能指定属性。

例如,triangleArea类定义了一个方法区域财产。区域被定义为一个相关的属性,这意味着它不存储值。get方法区域按需计算的值。(依赖属性的更多信息,请参阅获取和设置方法依赖属性。)

classdeftriangleArea属性底= 1高= 1结束属性(依赖)区域结束方法函数一个= get.Area (obj) disp (“执行。方法。”)= 0.5 * obj.Base * obj.Height;结束结束结束

创建一个实例triangleArea

一个= triangleArea
一个=执行。面积的方法。triangleArea属性:基础:1高度:1面积:0.5000

当显示一个对象,MATLAB调用的任何属性的get方法定义它显示。在这种情况下,它调用get.Area和计算的价值区域基于的默认值基地高度。如果一个get方法错误,MATLAB抑制错误和省略了属性的显示。

变化的值基地高度和访问区域一次。

一个。基地= 3;一个。身高= 4;a.Area
执行。面积的方法。ans = 6

Get方法的使用

  • 不递归调用Get方法。

  • 当复制一个值对象(即,不是来自于处理类),get方法并不时调用复制属性值从一个对象到另一个。

属性集的方法

您可以定义一组方法,MATLAB时自动调用相关的属性赋值。方法使用这些语法,这取决于类是一个值或处理类:

  • 值类设置方法必须返回修改后的对象。

    函数obj =设置方法。PropertyName(obj,值)……结束结束
  • 处理类设置方法不需要返回修改后的对象。

    函数集的方法。PropertyName(obj,值)……结束结束

块定义方法获取或设置方法不能指定属性。

例如,symPosDef使用一组属性验证的方法。当inputMatrix属性设置为一个新值,设置方法调用胆固醇函数来确定输入矩阵是对称正定的。如果是,该方法集inputMatrix这个值。如果不是,该方法返回一个自定义的错误消息。

classdefsymPosDef属性inputMatrix = [1 0;0 1]结束方法函数obj = set.inputMatrix (obj, val)试一试胆固醇(val) obj。inputMatrix= val;我的错误(“必须对称正定inputMatrix。”)结束结束结束结束

创建一个实例symPosDef并尝试设置inputMatrix的值不是一个对称正定矩阵。

s = symPosDef;年代。inputMatrix = [1 2;1 (1)
错误使用symPosDef /组。inputMatrixinputMatrixmust be symmetric positive definite.

设置方法的使用

  • 设置方法不递归地调用。

  • MATLAB不分配默认值时调用设置方法在初始化一个对象的属性。然而,在构造函数中设置属性值并调用设置方法。

  • MATLAB调用set方法对象时加载。

  • 当MATLAB拷贝一个值对象(不是任何对象处理),设置方法并不时调用复制属性值从一个对象到另一个地方。

  • 当一个属性的定义AbortSet属性等于真正的设置方法时的财产分配的值是一样的当前值。然而,如果属性的get方法,方法被调用,这样可以比较的值。看到作业时,属性值是不变的有关这个属性的更多信息。

相关的话题