Can you create an interface for different class objects and then store objects of these different classes in an array

8 ビュー (過去 30 日間)
hi,
I'm trying to create an array of class objects that all inherit from the same superclass but they vary in their implementation of inherited functions. I know i can create an array of class objects of the same class but i can't find a way to create an array of different class objects. In other languages this is where an interface would come in - I would declare an array of the interface, and then each individual object would be instantiated as a particular subclass - I hope this makes sense. THe folowing code is incorrect but I think what i'm looking would be somewhat like it:
% declare array of interfaceX arr(3) = interfaceX %instantiate each element as different class arr(1) = classA arr(2) = classB arr(3) = classC
Anybody got any ideas? I've looked at abstract classes, but unless i'm mistaken they simply serve as a template for inheriting classes.
Any help would be much appreciated - thanks!
Eoin

回答 (3 件)

Walter Roberson
Walter Roberson 2011 年 9 月 22 日
Which MATLAB version are you using? This was not possible until a fairly recent release; 2011a I think it was, but perhaps it was 2010b.
I seem to recall that people were generally not thrilled with the way it was implemented. It was something like that the type of the array was considered to be the type of the lowest superclass that all of the current array members could inherit from, so the array type could change as you added or removed members.
I haven't used this facility at all myself; I just browsed the discussion. Or perhaps it was another bad dream...
  2 件のコメント
Walter Roberson
Walter Roberson 2011 年 9 月 22 日
http://www.mathworks.com/help/techdoc/ref/brk7uzk.html#bsvqsj1
Heterogeneous Arrays
Tracking back through the releases, it appears to require R2011a .
Eoin
Eoin 2011 年 9 月 23 日
I better upgrade then!
Thanks for your help Walter

サインインしてコメントする。


Daniel Shub
Daniel Shub 2011 年 9 月 23 日
Depending on what you want to do a cell array might work ....
arr = {classA};
arr = [arr;{ClassB}];
  2 件のコメント
Eoin
Eoin 2011 年 9 月 23 日
Good idea but afraid not - it doesn't like when i try to call a function from it.
Thanks for the help though
Daniel Shub
Daniel Shub 2011 年 9 月 23 日
As I said, it depends on what you want to do. You might be able to use cellfun to call a function on it.

サインインしてコメントする。


Eoin
Eoin 2011 年 9 月 22 日
Hi Walter,
Thanks for your help
I'm on 2010b. DO you where i can find some example code for doing what you suggested. I've tried teh below to see if that does the trick
arr = classA;
arr = [arr;ClassB];
But it doesn't unfortunately.

カテゴリ

Help Center および File ExchangeConstruct and Work with Object Arrays についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by