超类的不同输入数量

Vary number of inputs for superclass

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 个参数调用子类?

干杯

使用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