Matlab 改变超类的输入数量
B是A的子类。我想用两个参数调用B,就像在B(arg1,arg2)中一样,并在B的构造函数中将arg1传递给A。代码如下所示:Matlab 改变超类的输入数量,matlab,oop,inheritance,constructor,Matlab,Oop,Inheritance,Constructor,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
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
classdef A
性质
arg1;
结束
方法
函数a=a(arg1)
如果nargin>0
a、 arg1=arg1;
结束
结束
结束
结束
类定义B0
b、 arg2=arg2;
结束
结束
结束
结束
到目前为止,一切顺利。现在,有时我想不带参数地调用B(例如初始化数组)。显然,调用B()会引发错误,因为没有足够的输入。也禁止在条件中调用As构造函数
是否有任何标准的方法来解决这个问题,基本上能够用0和n参数调用子类
干杯使用
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
classdef B0
b、 arg2=varargin{2};
结束
结束
结束
结束