如何在Matlab中访问超类的常量属性?

时间:2013-03-20 22:21:01

标签: oop matlab inheritance subclass superclass

我有一个简单的类结构:

classdef super < hgsetget
    properties(Constant = true, Access = private)
        PROP1 = 1;
        PROP2 = {2 [3 4] [5 6]};
    end

    methods
        function self = super()
            // Constructor code here
            // ...
        end
    end
end

然后由子类继承,如此。

classdef sub < super
    properties
        PROP3 = 7;
    end

    methods
        function self = sub()
            // Subclass constructor here
            // ...
            self = self@super();
            test = self.PROP1; // I don't appear to have access to PROP1 from Super

        end
    end
end

我的问题是,当我尝试访问超级的属性PROP1PROP2时,我似乎无法访问:

  

类sub没有合适的方法,属性或字段PROP1。

有没有办法在Matlab中访问super的属性?

2 个答案:

答案 0 :(得分:7)

在超类super中将属性属性设置为

properties(Constant = true, Access = protected)

the documentation开始,访问属性确定哪些代码可以访问这些属性:

  • public - Unrestricted access
  • protected - 从类或子类中的方法访问
  • private - 仅按类方法访问(不是从子类访问)

答案 1 :(得分:2)

您将属性定义为private,这些属性不会被继承。

改为使用Access = protected