Обработка совместимых классов

Элементарные знания

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

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

Handle-compatible class — класс, который можно включать с классами 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')

Похожие темы