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