Установление приоритета объекта позволяет MATLAB® определить который возможно из многих версий оператора или функции, чтобы вызвать в данной ситуации.
Например, рассмотрите выражение
objectA + objectB
Обычно, объекты имеют одинаковый приоритет, и метод, сопоставленный с крайним левым объектом, называется. Однако существует два исключения:
Классы заданы с classdef синтаксис имеет приоритет по этим классам MATLAB:
doubleединственныйint64uint64int32uint32int16uint16int8uint8'char'Строкалогическийячейка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.