如何在Matlab中创建多态数组

2024-04-25 07:44:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个抽象类的数组,并对数组的每个元素调用run()方法,这些元素引用该类的一个实现。在

在类似Java的代码中(请原谅语法,这只是为了说明一点),代码应该类似于:

abstract class Base{
    public void run();
}

class Derived0 extends Base{
    public void run(){...};//overrides Base's run() method
}

class Derived1 extends Base{
    public void run(){...};//overrides Base's run() method
}

class Derived2 extends Base{
    public void run(){...};//overrides Base's run() method
}

主要:

^{pr2}$

我想在matlab中实现这种行为

到目前为止,我对这个问题的回答是:

Inheritence Polymorphism In Matlab

我缺少的是如何制作数组baseArray?在

baseArray = []这样的事情会导致baseArray(1) = Derived0;期望加倍,因此失败。在

在matlab中不可能实例化一个Base数组,因为这个类是抽象的,并且用matlab创建对象数组的方法(我知道)不能创建实例。在

所以,请帮我在Matlab中实现一个多态数组。在

我也希望使用python解决方案,尽管Matlab解决方案是最好的。在

谢谢!在


Tags: 方法run代码元素base数组publicmethod
1条回答
网友
1楼 · 发布于 2024-04-25 07:44:23

在MATLAB中,如果用baseArray = []实例化数组,那么您已经声明该数组将是double类型,因此它不能工作。相反,您可以使用类的^{} method来创建该类的空数组。在

baseArray = Derived0.empty();
baseArray(1) = Derived0();

或者,您可以一次创建数组

^{pr2}$

另外,如果您想要一个异构的对象数组,您需要确保您的基类也继承自^{},然后您就可以这样做了

^{3}$

相关问题 更多 >