在单独文件中定义方法
类文件夹
您可以在不同于类定义文件的文件中定义类方法,但有某些例外(请参阅必须在 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 将类文件夹中的任何函数文件均视为类的方法。函数文件可以是 MATLAB 代码 (.m
)、实时代码文件格式 (.mlx
)、MEX 函数(平台相关的扩展名)和 P 代码文件 (.p
)。文件的基本名称必须为有效的 MATLAB 函数名称。有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。
有关将方法定义为 C++ MEX 函数的信息,请参阅Using MEX Functions for MATLAB Class Methods。
在函数文件中定义方法
要在类文件夹的单独文件中定义方法,请在一个文件中创建函数。不要在该文件中使用 method
-end
关键字。像任何函数一样,用函数名称命名文件。
在 myFunc.m
文件中,实现以下方法:
function output = myFunc(obj,arg1,arg2) % code here end
为了提高代码可读性,最好在方法块中声明 classdef
文件中的函数签名。您还必须声明函数签名来设置方法属性。如果您没有在 classdef
文件中声明函数签名,则该方法的所有属性都采用其默认值。例如,在 classdef
中没有签名的方法将 Access
设置为 public
,将 Sealed
设置为 false
,依此类推。
在 classdef
文件中指定方法特性
如果您需要为在单独的函数文件中定义的方法指定方法特性,请将方法签名包含在 classdef
文件的 methods
代码块中。此方法代码块指定应用于方法的特性。
例如,以下代码显示在 methods
代码块中将 Access
设置为 private
的方法。方法实现位于单独的文件中。不要在 methods
代码块中包含 function
或 end
关键字。仅包括显示输入和输出参量的函数签名。
classdef MyClass methods (Access = private) output = myFunc(obj,arg1,arg2) end end
在 @MyClass
文件夹中名为 myFunc.m
的文件中定义函数:
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
文件中定义以下方法。您不能在单独文件中定义这些方法:
类构造函数
所有在其名称中使用圆点的函数,包括:
转换器方法,这些方法必须使用命名空间名称作为类名的一部分,因为类包含在命名空间中
属性 set 和 get 访问方法