Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab中定义类的正确方法_Matlab - Fatal编程技术网

在matlab中定义类的正确方法

在matlab中定义类的正确方法,matlab,Matlab,我在matlab中构建了许多类,最近发现某些函数在我的类中表现得并不好。我的所有对象都从句柄超类继承 例如: finobj:我找不到我的任何对象,我的基础对象需要是matlab根的子对象吗?我该如何设置 清除:如果我更改了较低对象的属性,则清除环境并重新安装对象树会产生警告,可能需要销毁方法 我在这里看到,一个被期望重载一些操作,但肯定不是每个对象都被期望这样做 我的主要问题是,我必须定义什么才能使代码以合理的方式运行?findobj用于处理图形对象,而不是用户定义的对象。因此,它不会找到您

我在matlab中构建了许多类,最近发现某些函数在我的类中表现得并不好。我的所有对象都从句柄超类继承

例如:

  • finobj:我找不到我的任何对象,我的基础对象需要是matlab根的子对象吗?我该如何设置

  • 清除:如果我更改了较低对象的属性,则清除环境并重新安装对象树会产生警告,可能需要销毁方法

我在这里看到,一个被期望重载一些操作,但肯定不是每个对象都被期望这样做


我的主要问题是,我必须定义什么才能使代码以合理的方式运行?

findobj
用于处理图形对象,而不是用户定义的对象。因此,它不会找到您的对象(为什么您首先要找到它们?)

清除
影响变量,
清除类
也影响类定义。请注意,在早期版本的Matlab中,
清除类
也清除了所有断点

子类从超类(包括静态方法)继承一切。如果不想修改子类中的特定功能,则无需重载任何内容


如果你想让你的代码以一种合理的方式运行,你必须设计好它。您必须如何设计它在很大程度上取决于您的代码应该解决的问题。

事实证明,有许多类可以继承

  • hgsetget:提供了我在原始问题中想要的功能,这是一个比普通句柄更大的类
  • 句柄:裸体类,不适用于findobj、get或set
  • 动态道具:我不知道太多,稍后我会更新

我不知道我是否遗漏了一些东西,但在matlab中似乎没有一个可以继承的可能类的完整列表,指出了每个类的pro的con。

尝试清除类而不是仅仅清除可能?我有一个树结构,如果我清除了所有,修改其中一个叶子对象并重建树我收到通知说该对象已被修改,所以我想知道是否需要实现自己的删除方法。结果是“全部关闭”完成了操作,感谢您的回复,我一直在想,大多数类是否都会有默认的方法,我总是觉得自己错过了应该内置的东西。@Carel:这在很大程度上取决于你的类。然而,面向对象编程的好处在于,一般来说,在不中断任何操作的情况下扩展类是非常容易的,因此您可以随时添加内容。当然,您可能需要
清除类
,然后重新加载它们,但这就是为什么您实现了保存/加载功能(以防默认设置不适用于您)。非常正确。我总是会开始怀疑自己是否错过了什么,顺便感谢你的帮助:)