我正在使用一个子类和 super 类,看起来与此类似:
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);
我收到以下错误:
Not enough input arguments.
当我单步执行代码时,我注意到在调用子类的构造函数之前,先调用父类,使用零输入参数,然后调用子类构造函数,最后调用 super 的再次被调用。子类的正常构造调用顺序应该是什么?如果是这样,有没有办法先强制子类的构造函数,然后由谁调用父类?
最佳答案
call superclass constructor 的正确语法是:
classdef ClassSub < ClassSuper
%# ...
methods
function self = ClassSub(Param1, Param2)
self = self@ClassSuper(Param1);
self.prop2 = Param2;
end
end
end
关于matlab - Matlab OOP 中构造调用的顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16429997/