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