【问题标题】:Calling MATLAB Superclass of a superclass constructor调用超类构造函数的 MATLAB 超类
【发布时间】:2013-12-25 04:00:31
【问题描述】:

我有以下问题。我有三个类: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 的构造函数?

【问题讨论】:

    标签: matlab oop inheritance constructor


    【解决方案1】:

    B 的构造函数做了一些我在 C 中不想要的步骤

    这样的话,你的C就不是B了。如果C的构造过程中没有执行B的构造函数,那么C就不能成为B类的有效对象。但是,继承关系暗示了这一点。

    因此,继承 C

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

    【讨论】:

    • 哇,我怎么错过了!谢谢!当然,B“是”A,但 C“不是”B。感谢您的理解!
    猜你喜欢
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    相关资源
    最近更新 更多