Which Kind of Class to Use

Examples of Value and Handle Classes

Handle and value classes are useful in different situations. For example, value classes enable you to create new array classes that have the same semantics as MATLAB® numeric classes.

Class for Polynomials and Class to Represent Structured Data provides examples of value classes.

Handle classes enable you to create objects that more than one function or object can share. Handle objects allow more complex interactions among objects because they allow objects to reference each other.

Class to Implement Linked Lists and Developing Classes — Typical Workflow provides examples of a handle class.

When to Use Handle Classes

Use a handle class when:

  • No two instances of a class can have the same state, making it impossible to have exact copies. For example:

    • A copy of a graphics object (such as a line) has a different position in its parents list of children than the object from which it was copied. Therefore, the two objects are not identical.

    • Nodes in lists or trees having specific connectivity to other nodes—no two nodes can have the same connectivity.

  • The class represents physical and unique objects like serial ports or printers, in which the entity or state cannot exist in a MATLAB variable. However, a handle to such entity can be a variable.

  • The class defines events and notifies listeners when an event occurs (notify is a handle class method).

  • The class creates listeners by calling the handle class addlistener method.

  • The class subclasses the dynamicprops class (a subclass of handle) so that instances can define dynamic properties.

  • The class subclasses the matlab.mixin.SetGet class (a subclass of handle) so that it can implement a graphics object style set/get interface to access property values.

  • You want to create a singleton class or a class in which you track the number of instances from within the constructor. MATLAB software never creates a unique handle without calling the class constructor. A copy of a handle object is not unique because both original and copy reference the same data.

When to Use Value Classes

Value class instances behave like normal MATLAB variables. A typical use of value classes is to define data structures. For example, suppose you want to define a class to represent polynomials. This class can define a property to contain a list of coefficients for the polynomial. It can implement methods that enable you to perform various common operations on the polynomial object. For example, implement addition and multiplication without converting the object to another class.

A value class is suitable because you can copy a polynomial object and have two objects that are identical representations of the same polynomial. See Subclassing MATLAB Built-In Types for more information on value classes.

Was this topic helpful?