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

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

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

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

Почему классы Марка как нижние

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

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

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

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

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

Атрибут InferiorClasses

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

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

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

Оператор ?, объединенный с именем класса, создает объект 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, являются нижними, чтобы разделить объекты на подклассы.

Похожие темы