1

我正在尝试在 MATLAB 中执行以下操作:

定义一个具有属性的超类a

classdef (Abstract) superClass 
     properties (Abstract = true)
          a;
     end
end

定义一个子类,它继承自超类并实现一个 get 函数a

classdef subClass < superClass
    methods
           function val = get.a(obj)
                val = obj.a;
           end
    end
    properties
        a;
    end
end

我得到的是:

错误使用子类错误:文件:subClass.m 行:3 列:28 无法为类“子类”中的属性“a”指定获取函数,因为该属性未由该类定义。

根据文档,在抽象属性上定义 get/set 应该是可以的。

4

1 回答 1

0

有趣的是,我通过简单地在子类中的块之前定义块来让它工作(properties这里methods顺序似乎很重要):

classdef subClass < superClass
    properties
        a;
    end
    methods
        function val = get.a(obj)
            val = obj.a;
        end
    end
end

我认为这是 MATLAB 解析器的问题,也许您应该提交一个错误报告

于 2013-07-24T18:06:02.203 回答