在Matlab中,我有两个类
classdef A < matlab.mixin.Heterogeneous
properties
a;
end
methods
function obj = A(varargin)
obj.a = 3;
end
end
end
和
classdef B < A
properties
b;
end
methods
function obj = B(varargin)
obj = obj@A(varargin);
obj.b = 4;
end
end
end
我现在尝试初始化类型为B
的长度为2的数组:
>> objarray(2) = B
objarray =
1x2 heterogeneous A (A, B)
Properties:
a
Methods, Superclasses
为什么Matlab坚持要成为A级?我怎么能坚持认为它属于B
课呢?
编辑:
使用调试器很明显,Matlab在创建B
objarray(1)
的构造函数
答案 0 :(得分:2)
我自己从未尝试过,但我相信matlab.mixin.Heterogeneous
有一个方法getDefaultScalarElement
,您可以自己实现/覆盖,这将定义如何回填数组的初始元素分配后面的元素。有关详细信息,请参阅this文档页面的中间位置。