Установка приоритета объекта включает MATLAB® определить, какая из возможных многих версий оператора или функции должна вызываться в заданной ситуации.
Для примера рассмотрим выражение
objectA + objectB
Обычно объекты имеют равный приоритет, и вызывается метод, связанный с крайним левым объектом. Однако существует два исключения:
Классы, определенные с classdef синтаксис имеет приоритет над этими классами MATLAB:
double, single, int64, uint64, int32, uint32, int16, uint16, int8, uint8, char, string, logical, cell, struct, и function_handle.
Классы, заданные с помощью classdef синтаксис может задать их относительный приоритет относительно других классов, используя InferiorClasses атрибут.
Рассмотрим пример из Представления полиномов с классами. The 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 объект, а затем реализует сложение двух полиномов). The DocPolynom класс имеет приоритет над встроенным double класс.
Можно задать относительный приоритет классов, заданный с помощью classdef синтаксис путем перечисления нижестоящих классов в атрибуте класса. The InferiorClasses свойство помещает класс ниже других классов в иерархию приоритетов. Определите InferiorClasses свойство в classdef оператор:
classdef (InferiorClasses = {?class1,?class2}) myClass
Этот атрибут устанавливает относительный приоритет определяемого класса с порядком перечисленных классов.
Если objectA выше objectB в иерархии приоритетов, затем выражение
objectA + objectB
вызывает @classA/plus.m. И наоборот, если objectB выше objectA в иерархии приоритетов MATLAB вызывает @classB/plus.m.