Установление приоритета объекта позволяет 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.