Определите методы как 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
файл, включая:
Методы конвертера, которые должны использовать имя пакета как часть имени класса, поскольку класс содержится в пакетах
Набор свойств и получение методов доступа
Для получения дополнительной информации об определении методов в отдельных файлах смотрите Методы в отдельных файлах