Приоритет классов

Использование приоритета классов

MATLAB® использует приоритет класса, чтобы определить, какой метод вызывать, когда несколько классов имеют один и тот же метод. Можно задать относительный приоритет определяемых пользователем классов с классом InferiorClasses атрибут.

Материалы, представленные в этой теме, основаны на понимании следующей информации:

Зачем отмечать классы как неполноценные

Когда более одного класса задает методы с таким же именем или когда классы перегружают функции, MATLAB определяет, какой метод или функцию вызывать на основе доминирующего аргумента. Вот как MATLAB определяет доминирующий аргумент:

  1. Определите доминирующий аргумент на основе класса аргументов.

  2. Если существует доминирующий аргумент, вызовите метод доминирующего класса.

  3. Если аргументы имеют равный приоритет, используйте крайний левый аргумент в качестве доминирующего аргумента.

  4. Если класс доминирующего аргумента не задает метод с именем вызываемой функции, вызовите первую функцию в пути с этим именем.

Атрибут InferiorClasses

Задайте относительный приоритет определяемых пользователем классов, используя класс InferiorClasses атрибут. Чтобы задать классы, которые уступают определяемому классу, присвойте массив ячеек класса meta.class объекты этому атрибуту.

Для примера выполните следующее classdef объявляет, что MyClass доминирует над ClassName1 и ClassName2.

classdef (InferiorClasses = {?ClassName1,?ClassName2}) MyClass
   ...
end

The ? оператор, объединенный с именем класса, создает meta.class объект. Посмотрите metaclass.

Следующие классы MATLAB всегда уступают классам, определенным с помощью classdef синтаксис и не может использоваться в этом списке.

double, single, int64, uint64, int32, uint32, int16, uint16, int8, uint8, char, string, logical, cell, struct, и function_handle.

Доминирующий класс

MATLAB использует доминирование классов при оценке выражений с участием объектов более чем одного класса. Доминирующий класс определяет:

  • Какой метод класса вызывать, когда более одного класса задает методы с одинаковыми именами.

  • Класс массивов, которые формируются путем объединения объектов разных классов, предполагая, что MATLAB может преобразовать нижестоящие объекты в доминирующий класс.

Нет наследования атрибутов

Подклассы не наследуют суперкласс InferiorClasses атрибут. В подклассе заданы только классы InferiorClasses атрибут уступает объектам подкласса.

Похожие темы