在Matlab中可以定义多个类构造函数吗?如果是,怎么办?

最佳答案

每个类都有一个构造函数。但是...构造函数可以接受任意数量和类型的参数,包括基于varargin的参数。

因此,要提供Java中默认的第三个参数的选项,您可以编写类似以下内容(基于java documentation的示例):

public Bicycle(int startCadence, int startSpeed, int startGear) {
    gear = startGear;
    cadence = startCadence;
    speed = startSpeed;
}
public Bicycle(int startCadence, int startSpeed) {
    gear = 1;
    cadence = startCadence;
    speed = startSpeed;
}

在Matlab中,您可以编写
classdef Bicycle < handle
    properties (Access=public)
        gear
        cadence
        speed
    end
    methods (Access = public)
        function self = Bicycle(varargin)
            if nargin>2
                self.gear = varargin{3};
            else
                self.gear = 1;
            end
            self.cadence = varargin{1};
            self.speed = varargin{2};
        end
    end
end

关于oop - 多类构造器Matlab,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10254269/

10-13 04:15