Изменение унаследованных свойств

Изменение свойств суперкласса

Существует два отдельных условия, при которых можно переопределить свойства суперкласса:

  • Значение свойства суперкласса Abstract атрибут true

  • Значения свойства суперкласса SetAccess и GetAccess атрибуты private

Если суперкласс определяет свойство как абстрактное, подкласс должен реализовать конкретную версию этого свойства, или подкласс также является абстрактным. Суперклассы задают абстрактные свойства, чтобы создать последовательный интерфейс между подклассами.

Если суперкласс задает свойство с частным доступом, то доступ к этому свойству может получить только суперкласс. Подкласс может реализовать другое свойство с таким же именем.

Частное локальное свойство имеет приоритет в методе

Когда суперкласс и подкласс определяют свойство с таким же именем, методы, которые ссылаются на это свойство, получают доступ к свойству класса, определяющего метод.

Например, если свойство подкласса имеет то же имя что и частная собственность суперкласса, и метод суперкласса ссылается на имя свойства, MATLAB® обращается к свойству, заданному суперклассом.

Примите во внимание следующие классы, Super и Sub:

classdef Super
   properties (Access = private)
      Prop = 2
   end
   methods
      function p = superMethod(obj)
         p = obj.Prop;
      end
   end
end
classdef Sub < Super
   properties
      Prop = 1
   end
end

Если вы создаете образец Sub класс и использовать его, чтобы вызвать метод суперкласса, MATLAB обращается к частной собственности суперкласса:

subObj = Sub
subObj = 

  Sub with properties:

    Prop: 1
subObj.superMethod
ans =

     2

Похожие темы