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