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

标签 matlab oop constructor

我正在使用一个子类和 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/

相关文章:

matlab - 尝试使用 MATLAB 绘制 z = x + y 时图形不正确

c++ - 在 MATLAB 中识别 VC++ 编译器

java - 你认为我滥用了静力学吗?

c# - C# 中的前缀和后缀运算符重载

javascript - 如何在不刷新页面的情况下多次执行构造函数

logging - 并行 MATLAB 和日志记录

linux - Matlab VideoReader 编解码器错误?

c++ - 将类函数与其实际功能分开声明有什么好处?

javascript - JavaScript 中的原型(prototype)和构造函数(简单的英语)?

c++ - 编译器是否每次都实例化默认构造函数和复制构造函数以及复制赋值运算符?