Совместимые классы Handle

Базовые знания

Материалы, представленные в этом разделе, основаны на знании следующей информации.

Ключевые концепции

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')

Похожие темы