我是Matlab的新手,并且在调用超类方法方面遇到了一些问题。
我有这段代码:
超类测试1:
classdef test1 < handle
methods
function obj = test1()
end
function test2(obj)
disp(1);
end
end
end
子类测试:
classdef test < test1 & handle
properties
foo = 1;
end
methods
function obj = test()
obj = obj@test1();
end
function a = bar(obj)
superclasses(obj)
test2@test1(obj)
end
end
end
继承正常;超类函数将test1
显示为test
的超类。但是,当我调用test2@test1(obj)
时,它会返回错误:
&#34; @&#34;在方法中,调用同名的超类方法 说方法@超类。 &#34; @&#34;的左操作数必须是方法 名。
test
2方法显然存在于超类test1
中,所以我不确定到底出了什么问题。
答案 0 :(得分:1)
只有当超类和子类中的方法名称相同且调用位于具有相同名称的子类方法中时,才能使用@语法。否则你可以直接调用方法,因为没有混淆。因此,而不是test2@test1(obj)
只使用test2(obj)。
您也不需要在子类中再次将句柄指定为超类。