The material presented in this section builds on knowledge of the following information.
Handle-compatible class — a class that you can include with handle classes in a class hierarchy, even if the class is not a handle class.
All handle classes are handle-compatible.
All superclasses of handle-compatible classes must also be handle compatible.
HandleCompatible
— the class attribute that defines nonhandle classes as handle compatible.
Typically, when deriving a MATLAB® class from other classes, all the superclasses are handle classes, or else none of them are handle classes. However, there are situations in which a class provides some utility that is used by both handle and non-handle subclasses. Because it is not legal to combine handle and non-handle classes, the author of the utility class must implement two distinct versions of the utility.
The solution is to use handle-compatible classes. Handle compatible classes are a type of class that you can use with handle classes when forming sets of superclasses. Designate a nonhandle compatible class as handle-compatible by using the HandleCompatible
class attribute.
classdef (HandleCompatible) MyClass ... end
Handle-compatible classes (that is, classes whose HandleCompatible
attribute is set to true
) follow these rules:
All superclasses of a handle-compatible class must also be handle compatible
If a class explicitly sets its HandleCompatibility
attribute to false
, then none of the class superclasses can be handle classes.
If a class does not explicitly set its HandleCompatible
attribute and, if any superclass is a handle, then all superclasses must be handle compatible.
The HandleCompatible
attribute is not inherited.
A class that does not explicitly set its HandleCompatible
attribute to true
is:
A handle class if any of its superclasses are handle classes
A value class if none of the superclasses are handle classes
To determine if an object is a handle object, use the isa
function:
isa(obj,'handle')