Материалы, представленные в этом разделе, основаны на знании следующей информации.
Handle-compatible class - класс, который можно включить с классами handle в иерархию классов, даже если класс не является классом handle.
Все классы Handle совместимы с указателями.
Все суперклассы классов, совместимых с указателями, также должны быть совместимы.
HandleCompatible
- атрибут класса, который задает неслучайные классы как совместимые с указатель.
Как правило, при выведении MATLAB® класс из других классов, все суперклассы являются классами handle, или же ни один из них не является классами handle. Однако существуют ситуации, в которых класс предоставляет некоторую утилиту, которая используется как указателями, так и неуказателями. Поскольку объединение указателя и неклассов Handle не является законным, автор класса утилиты должен реализовать две отдельные версии утилиты.
Решение состоит в том, чтобы использовать совместимые с указателями классы. Совместимые с Handle классы являются типом класса, который можно использовать с классами handle при формировании наборов суперклассов. Определите несовместимый класс как совместимый с указателем при помощи HandleCompatible
атрибут класса.
classdef (HandleCompatible) MyClass ... end
Совместимые с Handle классы (то есть классы, HandleCompatible
для атрибута задано значение true
) следовать этим правилам:
Все суперклассы класса, совместимого с указателем, также должны быть совместимы
Если класс явным образом задает свои HandleCompatibility
атрибут к false
, тогда ни один из суперклассов классов не может быть обработан классами.
Если класс явным образом не задает свои HandleCompatible
атрибут и, если любой суперкласс является указателем, то все суперклассы должны быть обрабатываемыми.
The HandleCompatible
атрибут не наследуется.
Класс, который явным образом не задает свои HandleCompatible
атрибут к true
является:
Класс handle, если любой из его суперклассов является классами handle
Класс значения, если ни один из суперклассов не является классами handle
Чтобы определить, является ли объект указателя объектом, используйте isa
функция:
isa(obj,'handle')