Определение методов как функций MATLAB ® в methods блок, внутри classdef блок. Метод конструктора имеет то же имя, что и класс, и возвращает инициализированный объект класса. Чтобы создать объект со значениями свойств, уникальными для этого экземпляра, назначьте значения свойствам в конструкторе класса. Завершение всех функций метода с помощью end заявление.
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 отличается от языков C++ и Java ® тем, что нет специального скрытого объекта класса, передаваемого всем методам. Необходимо явно передать объект класса методу. Крайний левый аргумент не обязательно должен быть объектом класса, а список аргументов может содержать несколько объектов. MATLAB отправляет метод, определенный классом доминирующего аргумента. Дополнительные сведения см. в разделе Вызов метода.
При вызове методы должны находиться в пути MATLAB. Например, при создании объекта и последующем изменении текущей папки на папку, из которой файл метода не виден, при вызове этого метода возникает ошибка.
Всегда используйте имена методов с учетом регистра в коде MATLAB.
Вызовите обычные методы, используя синтаксис функции MATLAB или точечную нотацию. Например, предположим, что у вас есть класс, который определяет ordinaryMethod. Передайте объект определяющего класса и все необходимые аргументы.
classdef MyClass methods function out = ordinaryMethod(obj,arg1) ... end end end
Звонить ordinaryMethod использование объекта obj класса и любого синтаксиса:
obj = MyClass; r = ordinaryMethod(obj,arg1); r = obj.ordinaryMethod(arg1);
Статические методы не требуют объекта класса. Чтобы вызвать статический метод, префиксируйте имя метода именем класса, чтобы MATLAB мог определить, какой класс определяет метод.
classdef MyClass methods (Static) function out = staticMethod(arg1) ... end end end
Звонить staticMethod с использованием синтаксиса :classname.methodname
r = MyClass.staticMethod(arg1);
Сведения о методах, для которых не требуются объекты их класса, см. в разделе Статические методы.
Используйте Access атрибут метода для создания частного метода. Использование частной папки не требуется.
Список атрибутов метода см. в разделе Атрибуты метода.
В файле, содержащем определение класса, можно определить функции, не являющиеся методами класса (classdef). Определение локальных функций вне classdef - end блок, но в том же файле, что и определение класса. Функции, определенные в classdef файлы работают как локальные функции. Эти функции можно вызывать из любого места в одном и том же файле, но они не отображаются вне файла, в котором они определены.
Локальные функции в classdef полезны для служебных функций, которые используются только в этом файле. Эти функции могут принимать или возвращать аргументы, которые являются экземплярами класса, но, это не обязательно, как в случае обычных методов. Например, следующий код определяет myUtilityFcn за пределами classdef блок:
classdef MyClass properties PropName end methods function obj = MyClass(arg1) obj.PropName = arg1; end end end % End of classdef function myUtilityFcn ... end
Можно также создать функции пакета, которые требуют использования имени пакета при вызове этих функций.
Перегрузка функций MATLAB для класса путем определения метода класса с тем же именем, что и функция, которую требуется перегрузить. MATLAB отправляется методу класса, когда функция вызывается с экземпляром класса.
Можно перегрузить арифметические, логические, реляционные и индексные операторы MATLAB, определив методы классов с соответствующими именами.
См. раздел handle для списка операций, определенных для этого класса. Все классы, полученные из handle наследуют эти методы.
К методам, определенным в отдельных файлах, применяются следующие правила:
Чтобы задать атрибуты для метода, определенного в отдельном файле, объявите этот метод в блоке методов в classdef файл. Укажите значения атрибутов с помощью блока методов.
Сопоставить синтаксис, объявленный в блоке методов (если используется), с синтаксисом метода function линия.
Отдельный файл должен находиться в классе (@) папка.
Метод конструктора класса должен быть определен в classdef файл. Конструктор не может находиться в отдельном файле.
Класс дескрипторов delete методы должны быть определены в classdef файл. delete метод не может находиться в отдельном файле.
Все функции, использующие точки в своих именах, должны быть определены в classdef файл, включая:
Методы конвертера, которые должны использовать имя пакета как часть имени класса, поскольку класс содержится в пакетах
Набор свойств и методы получения доступа
Дополнительные сведения об определении методов в отдельных файлах см. в разделе Методы в отдельных файлах.