调用超类构造函数的MATLAB Superclass

时间:2013-12-07 21:37:08

标签: matlab oop inheritance constructor

我有以下问题。我有三个类: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

那么,我怎么能(或者我不能)将构造函数调用到A?

1 个答案:

答案 0 :(得分:2)

  

B的构造函数在C

中执行了一些我不想要的步骤

在这种情况下,你的C不是B.如果B的构造函数没有在C的构造过程中执行,那么C不能是B类的有效对象。但是,继承关系意味着这个。

因此,继承C&lt; B错了。你应该从A继承C.

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