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