Определите методы как 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 файл. Задайте значения атрибутов с блоком Methods.
Соответствовать синтаксису, объявленному в блоке методов (если используется), function метода линия.
Отдельный файл должен быть в классе (@) папка.
Метод конструктора классов должен быть определен в classdef файл. Конструктор не может быть в отдельном файле.
Класс Handle на delete методы должны быть определены в classdef файл. The delete метод не может находиться в отдельном файле.
Все функции, которые используют точки в своих именах, должны быть определены в classdef файл, включая:
Методы конвертера, которые должны использовать имя пакета как часть имени класса, поскольку класс содержится в пакетах
Набор свойств и получение методов доступа
Для получения дополнительной информации об определении методов в отдельных файлах смотрите Методы в отдельных файлах