Как получить доступ к постоянному свойству суперкласса в Matlab?

У меня есть простая структура класса, например:

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

Моя проблема в том, что когда я пытаюсь получить доступ к свойству super PROP1 или PROP2, я, похоже, не получаю доступа:

Нет подходящего метода, свойства или поля PROP1 для подкласса.

Есть ли способ получить доступ к свойству super в Matlab?


person James Mertz    schedule 20.03.2013    source источник


Ответы (2)


В суперклассе super установите атрибуты свойств на

properties(Constant = true, Access = protected)

Из документации атрибут доступа определяет, какой код может получить доступ к этим свойствам. :

  • общедоступный — неограниченный доступ
  • protected — Доступ из методов в классе или подклассах
  • private — Доступ только методами класса (не из подклассов)
person Alexey    schedule 20.03.2013

Вы определяете свойства как private, они не наследуются.

Вместо этого используйте Access = protected.

person Amro    schedule 20.03.2013