Establishing an object precedence enables MATLAB® to determine which of possibly many versions of an operator or function to call in a given situation.
For example, consider the expression
objectA + objectB
Ordinarily, objects have equal precedence and the method associated with the leftmost object is called. However, there are two exceptions:
User-defined classes have precedence over MATLAB fundamental classes (numeric, logical
,
char
, cell
,
struct
, and function handle) and certain built-in
classes.
User-defined classes can specify their relative precedence
with respect to other user-defined classes using the InferiorClasses
attribute.
In Class Design for Polynomials, the polynom
class
defines a plus
method that enables the addition
of DocPolynom
objects. Given the object p
:
p = DocPolynom([1 0 -2 -5]) p = x^3-2*x-5
the expression:
1 + p ans = x^3-2*x-4
calls the DocPolynom
plus
method
(which converts the double
, 1, to a DocPolynom
object
and then implements the addition of two polynomials). The user-defined DocPolynom
class
has precedence over the built-in double
class.
You can specify the relative precedence of user-defined classes
by listing inferior classes in a class attribute. The InferiorClasses
property
places a class below other classes in the precedence hierarchy. Define
the InferiorClasses
property in the classdef
statement:
classdef (InferiorClasses = {?class1,?class2}) myClass
This attribute establishes a relative priority of the class being defined with the order of the classes listed.
If objectA
is above objectB
in
the precedence hierarchy, then the expression
objectA + objectB
calls @
classA
/plus.m
.
Conversely, if objectB
is above objectA
in
the precedence hierarchy, then the MATLAB runtime calls @
classB
/plus.m
.