Методы и функции

Блок методов

Задайте методы, когда 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 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, включая:

    • Методы конвертера, которые должны использовать имя пакета в качестве части имени класса, потому что класс содержится в пакетах

    • Набор свойств и получает методы доступа

Для получения дополнительной информации об определении методов в отдельных файлах см. Методы в Отдельных Файлах

Похожие темы

Была ли эта тема полезной?