MATLAB中其他类的访问方法

MATLAB中其他类的访问方法,matlab,class,oop,object,Matlab,Class,Oop,Object,我正在自学如何使用MATLAB进行面向对象编程,并且有一个关于access的问题 我现在有三个类需要相互交互。有一个类,我称之为main,是用户将使用的接口(或者gui,如果我构建了一个)。Main存储用户可能需要的所有相关数据,并有一些方法来执行一些预处理和构造主对象。Main还调用其他两个类的构造函数 另一个类,我称之为指令,加载有关处理数据的步骤的信息(这是一个递归过程)和一些其他信息 最后一个类,我称之为core,执行流程的核心操作 这就是我的问题。在main中,我有一些在预处理中使用的

我正在自学如何使用MATLAB进行面向对象编程,并且有一个关于access的问题

我现在有三个类需要相互交互。有一个类,我称之为main,是用户将使用的接口(或者gui,如果我构建了一个)。Main存储用户可能需要的所有相关数据,并有一些方法来执行一些预处理和构造主对象。Main还调用其他两个类的构造函数

另一个类,我称之为指令,加载有关处理数据的步骤的信息(这是一个递归过程)和一些其他信息

最后一个类,我称之为core,执行流程的核心操作

这就是我的问题。在main中,我有一些在预处理中使用的“helper”方法。我希望对这些助手方法的访问是私有的,以便用户无法看到或使用它们。核心中的进程也需要使用其中一些辅助函数。我的问题是如何授予对main中helper函数的访问权限,以便只有main和core可以访问它们?我试图理解此处提供的信息:,但当我尝试以下内容时:

classdef main
Matlab给了我这个错误:

属性“Access”的值非法。
参数必须是字符串。
任何帮助都将不胜感激

安德鲁


顺便说一句,我意识到在这里没有必要使用三个不同的类,但正如我所说的,我只是在学习面向对象编程,当我开始这个项目时,我认为拥有多个类是一个好主意,因为整个项目将有5000多行代码。

您是否可能正在使用相对较旧版本的MATLAB

将类方法的访问权授予特定类的能力在2012a版中实现

如果您使用的MATLAB版本比该版本旧,则只能将方法访问属性设置为
public
protected
private

请注意,您链接到的文档页面总是指MATLAB的当前版本(目前为2014a)。您也可以通过网站登录MathWorks帐户来访问文档的旧版本


如果你有
main
的方法需要被
core
访问,那可能表明你的类关系设计得很糟糕。如果
core
main
的一个属性,那么它可能是
core
的一种方法,
main
可以通过
core

调用它,很少需要选择性访问。不使用它的主要原因是它打破了OOP的封装原则。在实施之前,我会考虑更改您的设计。


<更多信息,请在C++中查看<代码>朋友< /Cord>关键字。你很可能会发现很多关于它的信息,为什么不使用它呢。

你能把你的
core
类定义为
main
的子类,这样它就继承了那些带有
classdef core
的方法吗?我不确定这是否有效,所以我不想留下完整的答案。瞧,谢谢,@Engineero我开始觉得这是最好的方法!好吧,我确实想过这个主意,但出于某种原因,我从来没有检查过。我的MATLAB版本实际上只有2011a,所以这就是问题所在。谢谢你的帮助。如果我可以再问你一个问题,你认为我应该把core拉到main类中,还是让core成为一个基于main的超类的子类更好,这个超类包含了所有的helper函数?