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