Matlab 改变超类的输入数量

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

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
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};
结束
结束
结束
结束