调用超类构造函数的MATLAB超类
我有以下问题。我有三个类:A、B和C。A是基类,B继承A,C继承B 每一个都有一个接受大量参数的构造函数。然而,B的构造函数执行了一些我不希望在C中执行的步骤,除非我添加更多的接口代码,否则无法撤消这些步骤,这将破坏一些变量的封装。也就是说,我给我的类的用户提供了修改一些我不希望他们修改的变量的能力 因此,我认为我会很聪明,尝试从C调用a的构造函数。但是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 % ...
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。谢谢你的帮助!