Define methods as MATLAB® functions within a
classdef block. The constructor method
has the same name as the class and returns an object. You can assign
values to properties in the class constructor. Terminate all method
functions with an
classdef ClassName properties PropertyName end methods function obj = ClassName(arg1,...) obj.PropertyName = arg1; ... end function ordinaryMethod(obj,arg1,...) ... end end methods (Static) function staticMethod(arg1,...) ... end end end
MATLAB differs from languages like C++ and Java® in that there is no special hidden class object passed to all methods. You must pass an object of the class explicitly to the method. The left most argument does not need to be the class object, and the argument list can have multiple objects. MATLAB dispatches to the method defined by the class of the dominant argument. For more information, see Method Invocation.
Methods must be on the MATLAB path when called. For example, if you create an object and then change your current folder to a folder from which the method file is not visible, an error occurs when you call that method.
Always use case sensitive method names in your MATLAB code.
Call ordinary methods using MATLAB function syntax or dot
notation. For example, suppose you have a class that defines
Pass an object of the defining class and whatever arguments are required.
classdef MyClass methods function out = ordinaryMethod(obj,arg1) ... end end end
ordinaryMethod using the object
the class and either syntax:
obj = MyClass; r = ordinaryMethod(obj,arg1); r = obj.ordinaryMethod(arg1);
Static methods do not require an object of the class. To call a static method, prefix the method name with the class name so that MATLAB can determine what class defines the method.
classdef MyClass methods (Static) function out = staticMethod(arg1) ... end end end
staticMethod using the syntax
r = MyClass.staticMethod(arg1);
See Static Methods for information on methods that do not require objects of their class.
Access method attribute to create
a private method. You do not need to use a private folder.
See Method Attributes for a list of method attributes.
You can define functions that are not class methods in the file
that contains the class definition (
Define local functions outside of the
classdef - end block,
but in the same file as the class definition. Functions defined in
work like local functions. You can call these functions from anywhere
in the same file, but they are not visible outside of the file in
which you define them.
Local functions in
classdef files are useful
for utility functions that you use only within that file. These functions
can take or return arguments that are instances of the class but,
it is not necessary, as in the case of ordinary methods. For example,
the following code defines
classdef MyClass properties PropName end methods function obj = MyClass(arg1) obj.PropName = arg1; end end end % End of classdef function myUtilityFcn ... end
You also can create package functions, which require the use of the package name when calling these functions.
Overload MATLAB functions for your class by defining a class method with the same name as the function that you want to overload. MATLAB dispatches to the class method when the function is called with an instance of the class.
You can overload MATLAB arithmetic, logical, relational, and indexing operators by defining class methods with the appropriate names.
for a list of operations defined for that class. All classes deriving
handle inherit these methods.
The following rules apply to methods defined in separate files:
To specify attributes for a method defined in a separate
file, declare this method in a methods block in the
Specify the attribute values with the methods block.
The syntax declared in the methods block (if used)
must match the method's
The separate file must be in the class folder.
The class constructor method must be defined in the
The constructor cannot be in a separate file.
delete methods must
be defined in the
classdef file. The
cannot be in a separate file.
All functions that use dots in their names must be defined in
classdef file, including:
Converter methods that must use the package name as part of the class name because the class is contained in packages
Property set and get access methods
For more information on defining methods in separate files, see Methods in Separate Files