2

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

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);我收到以下错误:

没有足够的输入参数。

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

4

1 回答 1

4

调用超类构造函数的正确语法是:

classdef ClassSub < ClassSuper
    %# ...
    methods
        function self = ClassSub(Param1, Param2)
            self = self@ClassSuper(Param1);
            self.prop2 = Param2;
        end
    end
end
于 2013-05-07T23:20:45.047 回答