Вопрос подклассов Matlab - PullRequest
       4

Вопрос подклассов Matlab

3 голосов
/ 18 апреля 2009

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

classdef Table < Base

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

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

classdef subTable < Table

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

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

Есть идеи?

1 Ответ

4 голосов
/ 25 апреля 2009

Я не верю, что это возможно. От Документация MATLAB :

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

  • Свойство Abstract для суперкласса имеет значение true
  • Свойство суперкласса имеет атрибуты SetAccess и GetAccess, установленные как private

Не думаю, что это было бы хорошей идеей. Это нарушает принцип замещения Лискова . Функции, написанные для принятия таблицы, также должны иметь возможность принимать вложенную таблицу и работать должным образом. Если бы такая функция обращалась к PropA, она потерпела бы неудачу, когда передавала подтаблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...