Приоритет объекта в вызове метода

Приоритет объекта

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

Похожие темы