Установление приоритета объекта позволяет MATLAB ® определить, какую из возможных версий оператора или функции следует вызвать в данной ситуации.
Например, рассмотрим выражение
objectA + objectB
Обычно объекты имеют одинаковый приоритет, и вызывается метод, связанный с самым левым объектом. Однако существуют два исключения:
Классы, определенные с помощью classdef синтаксис имеет приоритет над этими классами MATLAB:
double, single, int64, uint64, int32, uint32, int16, uint16, int8, uint8, char, string, logical, cell, struct, и function_handle.
Классы, определенные с помощью classdef синтаксис может указывать их относительный приоритет по отношению к другим классам с помощью InferiorClasses атрибут.
Рассмотрим пример в разделе Представление многочленов классами. DocPolynom класс определяет plus способ, который позволяет добавлять DocPolynom объекты. Учитывая объект p:
p = DocPolynom([1 0 -2 -5])
p =
x^3-2*x-5
выражение:
1 + p
ans =
x^3-2*x-4
вызывает DocPolynom
plus метод (который преобразует double, 1, в DocPolynom объект и затем реализует сложение двух многочленов). DocPolynom класс имеет приоритет над встроенным double класс.
Можно указать относительный приоритет классов, определенных с помощью classdef синтаксис путем перечисления нижестоящих классов в атрибуте класса. InferiorClasses помещает класс ниже других классов в иерархии приоритетов. Определите InferiorClasses свойство в classdef заявление:
classdef (InferiorClasses = {?class1,?class2}) myClass
Этот атрибут устанавливает относительный приоритет определяемого класса с порядком перечисленных классов.
Если objectA выше objectB в иерархии приоритетов, затем выражение
objectA + objectB
требования @classA/plus.m. И наоборот, если objectB выше objectA в иерархии приоритетов, затем вызовы MATLAB @classB/plus.m.