在从抽象类继承的具体类中实现get / set属性

时间:2013-07-23 21:47:36

标签: matlab class oop abstract-class getter-setter

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

定义一个属性为a的超类:

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

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

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

我得到的是:

  

使用subClass时出错   错误:文件:subClass.m行:3列:28   无法在类'subClass'中为属性'a'指定get函数,因为该属性不是由该类定义的。

根据文档,它认为可以在抽象属性上定义get / set。

1 个答案:

答案 0 :(得分:0)

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

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

我认为这是MATLAB解析器的问题,也许您应该提交bug report

相关问题