在MATLAB中使用属性在单独的文件中定义方法

时间:2015-01-01 09:27:22

标签: matlab oop

如您所知,我们可以在@folder中的单独文件中定义类定义和方法定义。如果我们有方法属性,我们该怎么做?我在MATLAB OOP文档中读到我们应该在方法文件中使用这个结构:

classdef myClass
  method (att = value,...)
    tdata = testdata(obj,arg1,arg2)
 end 
end

但是我们在这个文件夹中有另一个文件(myClass)用于类定义,所以如果我们有这个结构,我们有两个类定义文件。其中一个具有属性定义,另一个具有方法属性(两个具有相同名称的文件!)。如果我们将classdef名称(myClass)更改为函数名称(testdata),我们在MATLAB中会出错。我该怎么办?

1 个答案:

答案 0 :(得分:2)

如果您使用@ - 文件夹和单独的文件定义课程,则不需要两个课程定义文件。您需要一个单独的类定义文件(基本上就像您在问题中定义的那样)和一个单独的文件,它只包含您的方法,作为一个函数实现。

例如:

<强> @MyClass \ MyClass.m

classdef MyClass
    properties (GetAccess = public, SetAccess = private)
        myGreeting
    end
    methods (Access = public)
        function obj = MyClass
            obj.myGreeting= 'hello'
        end
        function sayhello(obj, name)
            txt = obj.getText(name);
            disp(txt)
        end
    end
    methods (Access = private)
        txt = getText(obj, name)
    end
end

<强> @MyClass \ getText.m

function txt = getText(obj, name)
    txt = [obj.myGreeting, ' ', name];
end

请注意,如果需要从默认值修改方法属性,则只需在类定义文件中包含方法的存根定义。如果它是一种公共方法(以及非静态,非隐藏,非密封,非抽象等),您根本不需要包含它,您只需要将文件包含在@ - 文件夹