我有以下问题。我有三个类: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?
答案 0 :(得分:2)
B的构造函数在C
中执行了一些我不想要的步骤
在这种情况下,你的C不是B.如果B的构造函数没有在C的构造过程中执行,那么C不能是B类的有效对象。但是,继承关系意味着这个。
因此,继承C&lt; B错了。你应该从A继承C.
如果你真的想,我会尝试在B中实现一个(大部分是空的)受保护的构造函数,然后从C调用。不完全确定它在Matlab中有效。