建立对象优先级使MATLAB能够使用®确定在给定情况下要调用操作符或函数的多个版本中的哪个版本。
例如,考虑表达式
objectA+objectB
通常,对象具有相同的优先级,并且调用与最左边对象关联的方法。然而,有两个例外:
类的定义classdef
语法优先于这些MATLAB类:
双
,单
,int64
,uint64
,int32
,uint32
,int16
,uint16
,int8
,uint8
,字符
,字符串
,逻辑
,细胞
,结构体
,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
.