MATLAB ® использует приоритет класса, чтобы определить, какой метод следует вызвать, если несколько классов имеют один и тот же метод. Можно указать относительный приоритет определяемых пользователем классов с помощью классаInferiorClasses атрибут.
Материал, представленный в этой теме, основывается на понимании следующей информации:
Когда несколько классов определяют методы с одинаковым именем или когда классы перегружают функции, MATLAB определяет метод или функцию для вызова на основе доминирующего аргумента. Вот как MATLAB определяет доминирующий аргумент:
Определите доминирующий аргумент на основе класса аргументов.
При наличии доминирующего аргумента вызовите метод доминирующего класса.
Если аргументы имеют одинаковый приоритет, используйте крайний левый аргумент в качестве доминирующего аргумента.
Если класс доминирующего аргумента не определяет метод с именем вызываемой функции, вызовите первую функцию на пути с таким именем.
Укажите относительный приоритет определяемых пользователем классов с помощью класса 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 атрибуты уступают объектам подкласса.