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

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

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

Похожие темы

Была ли эта тема полезной?