You can convert an object of one class to an object of another
class. A converter method has the same name as the class it converts
to, such as `char`

or `double`

. Think of a converter method as
an overloaded constructor method of another class—it takes
an instance of its own class and returns an object of a different
class.

Converters enable you to:

Use methods defined for another class

Ensure that expressions involving objects of mixed class types execute properly

Control how instances are interpreted in other contexts

Suppose you define a `polynomial`

class. If
you create a `double`

method for the `polynomial`

class,
you can use it to call other functions that require inputs of type `double`

.

p = polynomial(...); dp = double(p); roots(dp)

`p`

is a polynomial object, `double`

is
a method of the `polynomial`

class, and `roots`

is
a standard MATLAB^{®} function whose input arguments are the coefficients
of a polynomial.

Classes defined in packages can have names that are a dot-separated
list of names. The last name is a class and preceding names are packages.
Name the conversion methods using the package qualifiers in the method
names. For example, a conversion method to convert objects of `MyClass`

to
objects of the `PkgName.PkgClass`

class uses this
method name:

classdef MyClass ... methods function objPkgClass = PkgName.PkgClass(objMyclass) ... end end end

You cannot define a converter method that uses dots in the name
in a separate file. You must define package-class converters in the `classdef`

file.

When you make a subscripted assignment statement like:

A(1) = myobj;

MATLAB compares the class of the Right-Side variable to the class of the Left-Side variable. If the classes are different, MATLAB attempts to convert the Right-Side variable to the class of the Left-Side variable. To do this, MATLAB first searches for a method of the Right-Side class that has the same name as the Left-Side class. Such a method is a converter method, which is similar to a typecast operation in other languages.

If the Right-Side class does not define a method to convert from the Right-Side class to the Left-Side class, then MATLAB software calls the Left-Side class constructor and passes it to the Right-Side variable.

For example, suppose you make the following assignments:

A(1) = objA; % Object of class ClassA A(2) = objB; % Object of class ClassB

MATLAB attempts to call a method of `ClassB`

named `ClassA`

.
If no such converter method exists, MATLAB software calls the `ClassA`

constructor,
passing `objB`

as an argument. If the `ClassA`

constructor
cannot accept `objB`

as an argument, then MATLAB returns
an error.

Use `cell`

arrays to store
objects of different classes.

Was this topic helpful?