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