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