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

标签 matlab oop

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

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

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

最佳答案

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

例如:

@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

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

关于matlab - 在 MATLAB 中使用属性在单独的文件中定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27729618/

相关文章:

matlab - 图像处理滤波器的 2D/3D 图

matlab - 使用 MATLAB 进行滚动窗口求平均值

C++ 帮助重构一个怪物类

java - 当用户直接将值输入到对象中时,如何进行输入验证?-JAVA

c# - 为什么 C# DataMember 属性允许私有(private)字段和属性的序列化?

matlab - 我应该使用 MATLAB Function 模块还是普通的 Simulink 模块?

matlab - 如何从命令行在 MATLAB 中保存图形?

matlab 函数工作错误

java - 使用 getter 和 setter 的私有(private)属性有什么好处?

java - 如何重构内部类MouseAdapter?