文档

自动更新为修改后的类

MATLAB加载类定义

MATLAB®加载一个类定义:

  • 第一次引用的类,比如创建一个实例,访问一个常数属性或调用一个类的静态方法。

  • 当加载类的定义变化和MATLAB返回到命令提示符。

  • 当你改变了MATLAB路径和导致不同的定义要使用的类。更改生效后MATLAB返回到命令提示符。

  • 当你访问类的元数据。

MATLAB允许定义一个类只有一个存在在任何时候。因此,MATLAB试图更新所有现有对象类的自动符合新的类定义。你不需要打电话明确的类删除现有的对象,当你改变自己的类定义。

请注意

使用MATLAB之外一个编辑器编辑器或者使用MATLAB在线™自动更新会导致延误。

自动更新的后果

MATLAB是一组基本规则当更新现有对象。一个自动更新会导致:

  • 现有对象被更新为新的类定义。

  • 一个错误如果MATLAB不能将对象转换为新的类定义或如果有一个错误在类定义本身。

这是一个例子,当你创建一个具体类的实例编辑类定义抽象类。

一个= MyClass;%编辑MyClass文摘一个
错误使用MyClass /显示无法更新对象,因为类“MyClass”现在是抽象的。

请注意

MATLAB不更新元类实例当你改变一个类的定义。你必须得到新的元数据在更新一个类的定义。

当类定义改变

MATLAB更新现有对象类定义的变化,包括下列情形:

  • 值变化来处理——现有对象独立处理指的是不同的对象。

  • 添加枚举成员——现有对象保存他们先前的枚举成员,即使底层的价值观已经改变了。

  • 枚举成员——不使用现有对象删除删除成员有相同的枚举成员之前。使用现有对象删除成员删除成员替换为默认枚举的成员。

  • 枚举块删除枚举成员使用。

  • 超类定义更改,更改应用到所有子类的父类的层次结构。

  • 超类添加或删除-改变应用于所有现有的超类对象。

行动不触发更新

这些行动不更新现有对象:

  • 调用函数在一个过时的对象

  • 将一个过时的对象分配给一个变量

  • 调用一个方法,不访问类数据

  • 改变属性的验证类定义(验证属性值)

对象不更新,直到引用的方式暴露了变化,如调用对象显示或分配财产。

多个更新类定义

逐步更新不发生的。更新符合最新版本的类。

类文件对象的有效性与删除

删除一个类定义文件不会使无效的类的实例。然而,您不能调用现有的该类的对象上的方法。

当更新是不可能的

一些类更新导致无效的类定义。在这些情况下,对象不更新,直到错误解决:

  • 添加一个超类可以导致一个属性或方法被定义了两次。

  • 改变一个超类密封当它的一个子类的对象存在导致无效的子类定义。

一些类更新原因情况下,MATLAB无法更新现有对象符合修改后的类定义。这些情况导致错误直到你删除对象:

  • 添加枚举块non-enumeration类

  • 重新定义一个类是抽象的

  • 删除一个类从一个异构的层次结构,导致没有预设来取代现有的异构数组中的对象

  • 更新一个类来限制阵列形成的行为,如重载数组索引和连接。

  • 继承一个subsref,subsasgn,,vertcat,或horzcat方法

  • 重新定义一个处理类是类的一个值。

类更新的潜在后果

  • 更新后,现有的对象可以不兼容新的类定义。例如,一个新添加的属性可以要求执行构造函数是有效的。

  • 删除或重命名属性可以失去数据的属性。例如,如果一个属性的唯一引用另一个对象,你删除属性的类,MATLAB删除对象,因为不再有任何引用它。

  • 删除一个类从一个异构类层次结构可能导致无效的异构数组元素。在这种情况下,默认的对象为异构的层次结构替换这些数组元素。

更新类属性

改变类属性可以改变现有对象的行为或使对象无效。MATLAB返回一个错误当你访问无效的对象。

改变 效果

使摘要= true

访问现有对象返回一个错误。

改变AllowedSubclasses

新创建的对象可以继承超类与现有对象不同。

改变ConstructOnLoad

加载类遵循的当前值ConstructOnLoad

改变HandleCompatible

新创建的对象可以有不同的类层次结构比现有的对象。

改变隐藏的

的类的超类和访问列表帮助函数可以改变

改变InferiorClasses

方法对现有的对象可以改变调度。

使密封= true

当访问现有的子类对象返回错误。

更新属性定义

当你改变类属性的定义,MATLAB应用更改现有的类的对象。

改变 效果

添加属性

将新属性添加到现有类的对象。属性值设置为默认值(这是[]如果类定义不指定一个默认)。

删除属性

删除从现有对象类的属性。试图访问属性删除失败。

改变属性的默认值

不适用新的默认值现有类的对象。

转移财产子类和父类之间的关系

不适用不同的默认值属性定义父类和子类之间移动。

改变属性的属性值

适用于修改现有对象的类。

某些情况下需要过渡的步骤:

  • 文摘——现有对象成为抽象的类不能被更新。删除这些对象。

  • 访问- - -更改公共,受保护的,或私人影响访问现有的对象属性访问设置。

    访问列表的变化不改变现有的对象。然而,如果您添加访问列表类,这些类可以访问该属性的实例。如果你从访问列表中删除类,这些类的对象不再使用这个属性。

  • 依赖——如果更改为真正的,现有的对象不再存储属性值。如果你想查询属性值,添加一个属性属性的get方法。

  • 瞬态——如果更改为真正的对象已经保存,重新加载这个属性值。如果改变了,对象已经保存的重载这个属性使用默认值。

更新方法定义

当你改变类的定义方法,MATLAB受影响的类成员在现有对象的更改如下。

改变 效果

添加方法

你可以叫新方法在现有对象的类。

修改方法

修改现有对象。

删除方法

你可以再调用删除方法现有对象。

改变方法属性值

申请更改现有的类的对象。

某些情况下需要过渡的步骤:

  • 文摘——现有对象成为抽象的类不能被更新。删除这些对象。

  • 访问-改变方法公共,受保护的,或私人访问设置影响访问现有的对象。

    访问列表的变化不改变现有的实例。然而,如果您添加访问列表类,这些类的实例可以访问这个方法。如果你从访问列表中删除类,这些类的对象不再使用这个方法。

  • 密封——如果更改为真正的和现有的已经定义了方法,子类MATLAB返回一个错误,因为新的类定义不能应用于现有的子类。

更新事件定义

改变 效果

添加事件

现有对象的类支持新的事件。金宝app

更改事件名称

新事件的名字是可见到现有类的对象。MATLAB:

  • 不更新现有的元类对象

  • 更新新收购的元类对象吗

  • 不更新听众使用新事件的名字吗

删除事件

现有对象不再支持删除事件。金宝app

更改事件属性值

申请更改现有的类的对象。

某些情况下需要过渡的步骤:

  • ListenAccess——改变事件公共,受保护的,或私人听access设置影响访问现有的对象。

    访问列表的变化不改变现有的对象。然而,如果您添加访问列表类,这些类的对象可以创建事件侦听器。如果你从访问列表中删除类,这些类的对象是不允许创建事件侦听器。

  • NotifyAccess——改变事件公共,受保护的,或私人通知设置影响访问现有的对象的访问。

    访问列表的变化不改变现有的对象。然而,如果您添加访问列表类,这些类的实例可以触发这个事件。如果删除类,这些类的对象不能触发这个事件。

相关的话题