B是A的子类。我想用两个参数调用B,如B(arg1,arg2),并在B的构造函数中将arg1传递给A.代码如下:
classdef A
properties
arg1;
end
methods
function a = A(arg1)
if nargin > 0
a.arg1 = arg1;
end
end
end
end
classdef B < A
properties
arg2
end
methods
function b = B(arg1, arg2)
b@A(arg1);
if nargin > 0
b.arg2 = arg2;
end
end
end
end
到目前为止,这么好。现在,有时我想在没有参数的情况下调用B(例如初始化数组)。显然调用B()会抛出错误,输入不够。将As构造函数的调用置于条件中也是禁止的。
有没有任何标准的方法来解决这个问题,基本上能够用0和n参数调用子类?
干杯
答案 0 :(得分:1)
使用varargin
classdef B < A
properties
arg2
end
methods
function b = B(varargin)
%pass all but the last argument to the super constructor
b@A(varargin{1:nargin-1});
if nargin > 0
b.arg2 = varargin{2};
end
end
end
end