Существует два отдельных условия, при которых можно переопределить свойства суперкласса:
Значение свойства 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