require subclasses to support the same number of input and output arguments as the abstract method of their super class
3 次查看(过去 30 天)
显示 更早的评论
- Concrete subclasses are not required to support the same number of input and output arguments and do not need to use the same argument names. However, subclasses generally use the same signature when implementing their version of the method.
what I want is exactly the opposite, i.e. I want Concrete subclasses are required to support the same number of input and output arguments and otherwise I get an error. How is it possible?
0 个评论
采纳的回答
Matt J
2022-2-13
编辑:Matt J
2022-2-13
In the base class constructor, you can check the function signature, like in this example:
classdef myclass
methods
function obj=myclass()
ml=getfield(metaclass(obj),'MethodList');
meth=ml({ml.Name}=="myMethod");
assert(isequal(numel(meth.InputNames),4) && ...
isequal(numel(meth.OutputNames),2),...
"myMethod has incorrect signature in subclass "+class(obj))
end
end
methods(Abstract)
[out1,out2]=myMethod(obj, in1, in2, in3)
end
end
2 个评论
Matt J
2022-2-14
You could ask them to implement it, but I doubt it's as easy as that. When the signature contains varargin or varargout, I imagine things get complicated.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Assembly 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!