主要内容

方法调用中的对象优先级

对象优先

建立对象优先级可以启用MATLAB®确定在给定情况下调用一个操作符或函数的可能多个版本中的哪一个。

例如,考虑表达式

objectA+objectB

通常,对象具有相同的优先级,并且调用与最左边对象关联的方法。然而,有两个例外:

  • 类定义。classdef语法优先于这些MATLAB类:

    int64uint64int32uint32int16uint16int8uint8字符字符串逻辑细胞结构体,function_handle

  • 类定义。classdef类可以指定它们相对于其他类的相对优先级InferiorClasses属性。

考虑下面的例子用类表示多项式.的DocPolynom类定义了+方法,该方法支持添加DocPolynom对象。给定对象p

p = DocPolynom([10 0 -2 -5]) p = x^3-2*x-5

表达式:

1 + pans = x^3-2*x-4

调用DocPolynom+方法(该方法转换, 1到aDocPolynom对象,然后实现两个多项式的加法)。的DocPolynom类的优先级高于内置的类。

定义优先级

类定义的类的相对优先级classdef通过在类属性中列出劣类来实现语法。的InferiorClasses属性将一个类放在优先级层次结构中其他类的下面。定义InferiorClasses的财产classdef声明:

classdef(InferiorClasses = {class1 ?类别2 ?}) myClass

此属性根据所列出的类的顺序建立所定义类的相对优先级。

层次结构中的位置

如果objectA以上objectB在优先层次结构中,则为表达式

objectA+objectB

调用@classA/ plus.m.相反,如果objectB以上objectA,然后MATLAB调用@classB/ plus.m

相关的话题