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