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