Handle Compatible Classes
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.
When to Use Handle-Compatible Classes
Typically, when deriving a MATLAB® class from other classes, all the superclasses are handle classes, or none of them are handle classes. However, there are situations in which a class provides some utility that is used by both handle and nonhandle subclasses. Because it is not legal to combine handle and nonhandle classes, the author of the utility class must implement two distinct versions of the utility.
The solution is to use handle-compatible classes. You can use handle-compatible
classes with handle classes when forming sets of superclasses. Designate a class as
handle compatible by using the
classdef (HandleCompatible) MyClass ... end
Handle Compatibility Rules
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
false, then none of the class superclasses can be handle classes.
If a class does not explicitly set its
HandleCompatibleattribute and, if any superclass is a handle, then all superclasses must be handle compatible.
HandleCompatibleattribute is not inherited.
A class that does not explicitly set its
HandleCompatible attribute to
A handle class if any of its superclasses are handle classes
A value class if none of the superclasses are handle classes
Identify Handle Objects
To determine if an object is a handle object, use the