主要内容

初始化属性值

有两种基本方法来初始化属性值:

  • 定义属性的默认值——MATLAB®分配相同的初始值的每个实例的属性。

  • 在构造函数中设置属性值——为每个实例构造函数评价赋值语句,使实例有独特的初始属性值。

定义属性的默认值

你可以指定一个默认值个人财产使用一个值或一个表达式。表达式不能包含变量。这个例子展示了几种方法来定义一个属性的默认值。

classdefPropExample属性Prop1 Prop2 =“一些文本”Prop3 =罪(π/ 12)Prop4 = datetime。空Prop5(1,1)双{mustBePositive}= 1结束结束
  • Prop1——属性定义不指定一个默认值,所以MATLAB初始化一个空的属性值([])。

  • Prop2——默认值是字符串标量“一些文本”

  • Prop3的值是默认值罪(π/ 12)。阅读这个属性返回评估表达式(0.2588),而不是表达本身。

    有关评估表达式的更多信息,你指定默认值,明白了评估类定义的表达式包含对象的属性

  • Prop4——默认值是一个空的datetime对象。

  • Prop5——默认值是1,一般仅限于标量属性值,积极的双打。当一个属性定义指定任何大小、类或验证函数限制属性值,那么默认值必须满足这些条件。例如,默认值为0会导致一个错误在实例化,因为它不满足mustBePositive

    信息产权限制基于大小,类,和验证功能,请参阅验证属性值

请注意

MATLAB计算一个默认表达式首先需要属性值时(例如,当类首次实例化)。然后使用相同的默认值为一个类的所有实例。MATLAB不重新默认表达式,除非类定义从内存中清除。

处理对象为默认属性值

当你使用一个句柄类构造函数创建一个默认的属性值,MATLAB调用构造函数只有当类是第一次使用,然后使用相同的对象处理作为默认属性的所有实例。因为所有对象的句柄引用同一个对象,您所作的改变对处理对象的一个实例反映在所有实例的处理对象。初始化一个新的实例的属性值处理对象每次实例化类,在构造函数中指定属性值。

在构造函数中设置属性值

赋值到一个属性在类构造函数,引用的对象构造函数返回(输出变量obj使用点符号)和属性名。

classdefMyClass属性Prop1结束方法函数obj = MyClass (intval中)obj。Prop1 = intval中;结束结束结束

当你分配一个值的属性类的构造函数,MATLAB计算每个对象创建的赋值语句。在构造函数中指定属性值如果你想要每个对象包含一个独特的属性值。

例如,ContainsHandle分配一个唯一的处理对象的类MyHandleClassProp1为每一个实例。ContainsHandle通过调用吗MyHandleClass构造函数的构造函数。

classdefContainsHandle属性Prop1结束方法函数obj = ContainsHandle(键盘,valueSet) obj。Prop1 = MyHandleClass(键盘、valueSet);结束结束结束

构造函数方法的更多信息,请参阅引用对象的构造函数

房地产之前验证建筑

MATLAB验证默认属性值赋值之前,在构造函数中值。默认值的分配属性块和任何值设置的属性在类构造函数必须满足指定的验证。例如,PropInit限制道具一个标量积极翻倍,但它不指定一个默认值。默认情况下,MATLAB分配一个初始值的空的两倍。

classdefPropInit属性道具(1,1)双{mustBePositive}结束方法函数obj = PropInit positiveInput obj。支持= positiveInput;结束结束结束

调用类的构造函数与一个有效的值道具仍然会导致一个错误,因为最初的空的一倍道具。一个空的双不满足验证功能mustBePositive

obj = PropInit (2);
错误使用隐式属性的道具类的默认值“PropInit”:值必须是积极的。

为了避免这个问题,确保你的属性有默认值,满足你的验证,即使你打算在构造函数中覆盖这些值。

相关的话题

Baidu
map