Можно задать методы класса в файлах, которые являются отдельными от файла определения класса за определенными исключениями (см. Методы, которые Необходимо Задать в classdef Файле).
Чтобы использовать несколько файлов для определений классов, поместите файлы класса в папку, имеющую имя, начинающееся с символа @
, сопровождаемого под названием класс (это называется папкой класса). Гарантируйте, что родительская папка папки класса находится на пути MATLAB®.
Если папка класса содержится в одной или нескольких папках пакета, то папка пакета верхнего уровня должна быть на пути MATLAB.
Например, папка @MyClass
должна содержать файл MyClass.m
(который содержит блок classdef
), и может содержать другие методы и функцию, определяемую в файлах, имеющих расширение .m
. Папка @MyClass
может содержать много файлов:
@MyClass/MyClass.m @MyClass/subsref.m @MyClass/subsasgn.m @MyClass/horzcat.m @MyClass/vertcat.m @MyClass/myFunc.m
MATLAB обрабатывает any.m файл в папке класса как метод класса. Базовое имя файла должно быть допустимым именем функции MATLAB. Допустимые имена функций начинаются с буквенного символа и могут содержать буквы, числа или символы нижнего подчеркивания.
Чтобы задать метод в отдельном файле в папке класса, создайте функцию в файле с расширением .m
. Не используйте method
-end
ключевые слова в том файле. Назовите файл с именем функции, как с любой функцией.
В файле myFunc.m
реализуйте метод:
function output = myFunc(obj,arg1,arg2) ...% code here end
Это - хорошая практика, чтобы объявить функциональную подпись в файле classdef
в блоке методов:
classdef MyClass methods output = myFunc(obj,arg1,arg2) end ... end
Определение Атрибутов Метода в classdef Файле
Если вы задаете атрибуты метода для метода, который вы задаете в файле отдельной функции, включаете сигнатуру метода в блок methods
в файле classdef
. Этот блок методов задает атрибуты, которые применяются к методу.
Например, следующий код показывает метод с набором Access
к private
в блоке methods
. Реализация метода находится в отдельном файле. Не включайте function
или ключевые слова end
в блоке methods
. Включайте только функциональную подпись, показывающую аргументы ввода и вывода.
classdef MyClass methods (Access = private) output = myFunc(obj,arg1,arg2) end end
В файле с именем myFunc.m
, в папке @MyClass
, задают функцию:
function output = myFunc(obj,arg1,arg2) ... end
Чтобы создать статический метод, установите метод атрибут Static
на true
и перечислите функциональную подпись в блоке статических методов в файле classdef
. Включайте аргументы ввода и вывода с именем функции. Например:
classdef MyClass ... methods (Static) output = staticFunc1(arg1,arg2) staticFunc2 end ... end
Задайте функции в отдельных файлах с помощью той же функциональной подписи. Например, в файле @MyClass/staticFunc1.m
:
function output = staticFunc1(arg1,arg2) ... end
и в @Myclass/staticFunc2.m
:
function staticFunc2 ... end
Методы Необходимо Задать в classdef Файле
Задайте следующие методы в файле classdef
. Вы не можете задать эти методы в отдельных файлах:
Конструктор класса
Все функции, которые используют точки на их имена, включая:
Методы конвертера, которые должны использовать имя пакета в качестве части имени класса, потому что класс содержится в пакетах
Набор свойств и получает методы доступа