2

我是 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

继承工作正常;superclasses 函数显示test1为 的超类test。但是,当我调用时test2@test1(obj),它会返回一个错误:

"@" 在一个方法中,通过method@superclass 调用同名的超类方法。“@”的左操作数必须是方法名。

2test方法显然存在于超类test1中,所以我不确定到底出了什么问题。

4

1 回答 1

1

仅当超类和子类中的方法名称相同并且调用在具有相同名称的子类方法中时,才能使用 @ 语法。否则,您可以直接调用该方法,因为没有混淆。所以不要test2@test1(obj)只使用 test2(obj)。

您也不需要在子类中再次将句柄指定为超类。

于 2014-01-28T17:53:55.330 回答