在Matlab OOP中构造调用的顺序是什么?

时间:2013-05-07 23:03:42

标签: matlab oop constructor

我有一个我正在使用的子类和超类看起来类似于:

classdef ClassSub < ClassSuper
    properties
        prop2
    end

    methods
        function self = ClassSub(Param1, Param2)
            self = ClassSuper(Param1);
            self.prop2 = Param2;
        end
    end
end

classdef ClassSuper
    properties
        prop1
    end

    methods
        function self = ClassSuper(Param1)
            self.prop1 = Param1;
        end
    end
end

当我去创建一个新的子类时:test = ClassSub(1,2);我收到以下错误:

  

没有足够的输入参数。

当我单步执行代码时,我注意到在调用子类的构造函数之前,调用supers,使用零输入参数 然后调用子类构造函数,然后最后再次召唤超级。什么应该是子类的构造调用的正常顺序?如果是这样,有没有办法先强制子类的构造函数,谁然后调用超级?

1 个答案:

答案 0 :(得分:4)

call superclass constructor的正确语法是:

classdef ClassSub < ClassSuper
    %# ...
    methods
        function self = ClassSub(Param1, Param2)
            self = self@ClassSuper(Param1);
            self.prop2 = Param2;
        end
    end
end