主要内容

财产定义

你可以定义什么

以下方式控制属性定义的方面:

笔记

属性不能与类具有相同的名称。

笔记

始终在MATLAB中使用区分敏感的属性名称®代码。

初始化属性值

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

  • 在属性定义中 - MATLAB仅评估一次表达式并为每个实例的属性分配相同的值。

  • 在Class构造函数中 - MATLAB评估每个实例的赋值表达式,这可确保每个实例具有唯一的值。

有关评估您称为属性默认值的表达式的更多信息,请参阅当matlab评估表达时

属性默认值

在A中特性块,您可以控制单个属性的默认值。将默认值分配为值或MATLAB表达式。表达式无法引用变量。例如:

  • Prop1.- 没有分配结果为空[]默认值

  • Prop2.- 将字符数组分配为默认值

  • prop3.- 将表达结果分配为默认值

  • Prop4.- 分配空约会时间反对Prop4.

  • Prop5.- 分配满足标量正双倍的指定限制的默认值。

Classdef.班级名称特性prop1 prop2 =“一些文字”prop3 = sin(pi / 12)prop4 = datetime.prest prop5(1,1)双倍{mustbepositive}= 1结尾结尾

如果类定义未指定默认属性值,则MATLAB将属性值初始化为空双倍的[])。如果类指定属性值的任何类,大小或验证功能限制,则该类必须确保默认值通过在空值无效时分配有效值来满足这些限制。

笔记

只有在首次需要该值时才发生属性默认值的评估,并且当Matlab首次初始化类时,才会发生一次。MATLAB每次创建类别的实例时都不会重新评估表达式。

有关评估您称为属性默认值的表达式的更多信息,请参阅评估类定义中的表达式包含对象的属性

有关属性定义中使用的类,大小和验证函数的信息,请参阅验证属性值

初始化处理对象的属性

MATLAB在MATLAB加载类定义时仅将指定的默认值分配给属性。如果使用句柄类构造函数来创建属性默认值,则Matlab仅在首次使用类时才会调用构造函数,然后使用与创建的所有对象中的属性相同的对象句柄。由于所有对象处理引用相同的对象,所以在一个实例中对句柄对象所做的任何更改都在所有情况下对句柄对象进行。

如果您希望每次创建类的对象时要将属性值初始化为句柄对象的新实例,请在构造函数中分配属性值。

在构造函数中分配属性值

要从类构造函数中分配对属性的值,请参阅构造函数返回的对象(输出变量obj.)使用DOT表示法的属性名称:

Classdef.我的课特性Prop1.结尾方法功能obj = myclass(Intval)每种实例的%初始化prop1obj.prop1 = Intval;结尾结尾结尾

在Class构造函数中分配属性时,MATLAB会为您创建的每个对象评估分配语句。如果希望每个对象包含该属性的唯一值,则在构造函数中分配属性值。

例如,假设您希望每次创建一个其他对象时为另一个对象分配唯一的句柄对象。将句柄对象分配给构造函数中的属性。调用Handle对象构造函数以使用类的每个实例创建唯一的句柄对象。

Classdef.容纳股份特性Prop1.结尾方法功能obj = contains ashandle(keyset,supersetet)obj.prop1 = myHandleClass(Keyset,Valueet);结尾结尾结尾

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

在构造对象之前评估的默认值

MATLAB在构造函数中赋值之前验证属性默认值。有必要为默认值分配特性块和类构造函数中设置的属性值以满足指定的验证。例如,此类限制支柱到标量正双,但不会分配有效的默认值。默认情况下,MATLAB分配空双倍的默认值,导致运行时错误。

Classdef.招生特性%错误没有有效的默认值支柱(1,1)双倍{mustbepositive}%空默认值失败了必需的结尾方法功能obj = propinit(positionInpul)obj.prop = position upput;结尾结尾结尾

使用有效值调用类构造函数支柱导致验证功能的错误必须

obj = propinit(2);
使用类“propinit”属性'prop'的隐式默认值的错误:值必须是正面的。

属性属性

所有属性都具有修改属性行为的某些方面的属性。指定的属性适用于特定属性块中的所有属性。例如:

Classdef.班级名称特性propertyAttribute = Value.Prop1.Prop2.结尾结尾

例如,只有相同类定义中的方法只能修改和查询薪水密码特性。

Classdef.EmployeeInfo.特性(访问=私人)薪资密码结尾结尾

存在此限制,因为该类定义了其中的这些属性特性使用权属性设置为私人的

属性属性

有关属性属性的描述,您可以指定,请参阅属性属性

设置和获取属性值的方法

MATLAB在设置或查询属性值时调用。定义属性设置访问或获取访问方法方法指定任何属性并具有以下语法的块:

方法功能obj = set。propertyname.(OBJ,价值)......结尾功能value = get。propertyname.(obj)......结尾结尾

有关访问方法语法的特定信息,请参阅属性获取方法属性集方法

在分配属性定义块中指定的默认值时,MATLAB不会调用属性设置访问方法。

例如,设置密码方法测试分配给命名的属性的字符数组的长度密码。如果分配给属性的值少于七个字符,则Matlab返回错误。否则,MATLAB将指定的值分配给属性。

功能obj = set.password(obj,pw)如果numel(pw)<7错误('密码必须至少有7个字符'别的obj.password = pw;结尾

有关属性访问方法的更多信息,请参阅物业访问方法

使用变量引用对象属性

MATLAB可以从a中解析属性名称char使用表单表达式的变量:

目的。(propertynamevar.

在哪里propertynamevar.是包含有效对象属性的名称的变量。将属性名称作为参数传递时使用此语法。例如,GetPropValue函数返回值的值keytype.财产:

Propname ='keytype';功能o = getPropvalue(OBJ,Propname)o = obj。(Propname);结尾

相关话题