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