2009-04-17 7 views
3

Вопрос о подклассе в matlab, под новой системой классов. У меня есть класс А с некоторыми защищаемыми свойствами:Matlab subclassing question

classdef Table < Base 

properties (SetAccess = protected, GetAccess = public) 
    PropA = []; 
end %properties 

Я хотел бы сделать подкласс с некоторыми специализированными функциями, а также дополнительно ограничить доступ к пропу. (т. е. сделать доступ закрытым в подклассе). Моя первая мысль была:

classdef subTable < Table 

... 
methods (Access = private) 
    out = get.PropA(obj, value); 
end %private methods 

Однако в справке говорится: «Вы должны определить методы доступа к собственности в блоке методов, которые не определяют атрибутов.» Так много для этой идеи.

Любые идеи?

ответ

4

Я не верю, что это возможно. Из MATLAB Documentation:

Есть только два условия, которые позволяют переопределить суперкласс свойства:

  • Суперкласса свойства Абстрактного атрибут установлен верно
  • Суперкласса свойство имеет как SetAccess и GetAccess атрибутов установлены частный

Не думаю, что это было бы хорошей идеей. Он нарушает Liskov Substitution Principle. Функции, написанные для приема таблицы, также должны иметь возможность принимать субтаблицу и работать должным образом. Если бы такая функция имела доступ к PropA, она не сработала при передаче subTable.