主要内容

方法调用中的对象优先级

对象优先

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

例如,考虑表达式

objectA+objectB

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

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

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

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

考虑一下用类表示多项式.的DocPolynom类定义了一个+方法,该方法允许添加DocPolynom对象。考虑到对象p

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

表达式:

1 + p = 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

相关的话题