Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用超类构造函数的MATLAB超类_Matlab_Oop_Inheritance_Constructor - Fatal编程技术网

调用超类构造函数的MATLAB超类

调用超类构造函数的MATLAB超类,matlab,oop,inheritance,constructor,Matlab,Oop,Inheritance,Constructor,我有以下问题。我有三个类:A、B和C。A是基类,B继承A,C继承B 每一个都有一个接受大量参数的构造函数。然而,B的构造函数执行了一些我不希望在C中执行的步骤,除非我添加更多的接口代码,否则无法撤消这些步骤,这将破坏一些变量的封装。也就是说,我给我的类的用户提供了修改一些我不希望他们修改的变量的能力 因此,我认为我会很聪明,尝试从C调用a的构造函数。但是MATLAB不喜欢这样。请参阅下面的代码 classdef C < B % properties go here % ...

我有以下问题。我有三个类:A、B和C。A是基类,B继承A,C继承B

每一个都有一个接受大量参数的构造函数。然而,B的构造函数执行了一些我不希望在C中执行的步骤,除非我添加更多的接口代码,否则无法撤消这些步骤,这将破坏一些变量的封装。也就是说,我给我的类的用户提供了修改一些我不希望他们修改的变量的能力

因此,我认为我会很聪明,尝试从C调用a的构造函数。但是MATLAB不喜欢这样。请参阅下面的代码

classdef C < B
  % properties go here
  % ...
  methods(Access = public)
    function obj = C(arguments)
      obj = obj@A(A's arguments);  % MATLAB doesn't like this
      % ...
    end
  end
classdef C
那么,我怎么能(或者我不能)调用构造函数来调用一个函数呢

B的构造函数执行了一些我不希望在C中执行的步骤

在这种情况下,您的C不是B。如果在C的构造过程中未执行B中的构造函数,则C不能是类B的有效对象。但是,继承关系暗示了这一点

因此,继承C
如果你真的想,我会尝试在B中实现一个(大部分是空的)受保护的构造函数,然后从C中调用。但我不完全确定它在Matlab中是否有效。

哇,我怎么会错过这个!谢谢当然,B是a,但C不是B。谢谢你的帮助!