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