我想創建一個抽象類的數組,並在每個數組的元素上調用一些run()方法,該方法引用該類的實現。如何在Matlab中創建一個多態陣列
的東西像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
}
主:
Base baseArray[3];
baseArray[0] = new Derived0();
baseArray[1] = new Derived1();
baseArray[2] = new Derived2();
//runs each possible run() method, without main knowing any of them.
for(int i=0;i<3;++i){
baseArray.run();
}
我想在matlab中實現這種行爲
我到目前爲止是這個問題的接受答案:
Inheritence Polymorphism In Matlab
我缺乏的是如何使數組baseArray?
像baseArray = []
這樣的事情導致baseArray(1) = Derived0;
預期翻倍,因此失敗。
在matlab中實例化一個Base數組是不可能的,因爲這個類是抽象的,並且沒有實例可以用matlab創建對象數組的方式創建(我知道的)。
所以,請幫助我在Matlab中實現一個多態數組。
我也很感謝python解決方案,儘管Matlab解決方案是最好的。
謝謝!
不錯!但是 - 如果我想讓我的數組實例化爲固定大小n而不是每次添加元素時都會增長?你的第一種方法使它增長,第二種方法不允許變量大小 – Gulzar
@Gulzar這在MATLAB中是不可能的。有一個預先分配的數組的唯一方法是用* actual *對象填充它,就像在我的第二個示例中那樣,然後用新對象替換它們。你可以創建一個引用數組來引用* same *對象來實例化它。有一些更多的相關信息[這裏](http://stackoverflow.com/questions/35899875/not-enough-input-arguments-error-when-creating-an-array-of-custom-objects/35901096#35901096) – Suever