Материал, представленный в этом разделе, основывается на понимании следующей информации:
Определение класса может задать список классов, которые оно позволяет как подклассы. Классы не в списке не могут быть заданы как подкласс класса. Чтобы задать позволенные подклассы, используйте AllowedSubclasses атрибут класса.
AllowedSubclasses атрибут обеспечивает точку проекта между Sealed классы, которые не позволяют разделять на подклассы, и поведение по умолчанию, которое не ограничивает разделение на подклассы.
Путем управления позволенными подклассами можно создать изолированную иерархию классов. Таким образом, система классов, которая позволяет определенному набору классов вывести из определенных базовых классов, но это не позволяет неограниченное разделение на подклассы.
Смотрите Задают Изолированную Иерархию Классов для больше об этом методе.
Задайте список одного или нескольких позволенных подклассов в classdef оператор путем присвоения meta.class объекты к AllowedSubclasses атрибут. Создайте meta.class объект, ссылающийся на определенный класс с помощью ? оператор и имя класса:
classdef (AllowedSubclasses = ?ClassName) MySuperClass ... end
Используйте массив ячеек meta.class объекты задать больше чем один позволенный подкласс:
classdef (AllowedSubclasses = {?ClassName1,?ClassName2,...?ClassNameN}) MySuperClass ... end
Всегда используйте полностью определенное имя класса при ссылке на имя класса:
classdef (AllowedSubclasses = ?Package.SubPackage.ClassName1) MySuperClass ... end
Присвоение массива пустой ячейки к AllowedSubclasses атрибут является эффективно тем же самым как определением Sealed класс.
classdef (AllowedSubclasses = {}) MySuperClass ... end
Используйте только ? оператор и имя класса, чтобы сгенерировать meta.class объекты. Значения присвоены AllowedSubclasses атрибут не может содержать никакие другие выражения MATLAB®, включая функции, которые возвращают любой meta.class объекты или массивы ячеек meta.class объекты.
Включая класс в списке AllowedSubclasses не задает тот класс как подкласс или требует, чтобы вы задали класс как подкласс. Это только позволяет классу, на который ссылаются, быть заданным как подкласс.
При объявлении класса, когда позволенный подкласс не влияет, может ли этот класс самостоятельно быть разделен на подклассы.
Определение класса может содержать присвоения на AllowedSubclasses припишите это классы ссылки, которые в настоящее время не заданы или не доступны на пути MATLAB. Однако любой подкласс, на который ссылаются, который MATLAB не может найти при загрузке класса, эффективно удален из списка, не вызывая ошибку или предупреждение.
Если MATLAB не находит ни одного из классов в позволенном списке классов, классом является эффективно Sealed. Запечатанный класс эквивалентен AllowedSubclasses = {}.
Используйте meta.class свойство RestrictsSubclassing определить, является ли классом Sealed или задает AllowedSubclasses.
AllowedSubclasses атрибут позволяет вам задать иерархию запечатанного класса путем изоляции позволенных подклассов:
classdef (AllowedSubclasses = {?SubClass1,?SubClass2}) SuperClass ... end
Задайте позволенные подклассы как Sealed:
classdef (Sealed) SubClass1 ... end classdef (Sealed) SubClass2 ... end
Иерархии запечатанного класса позволяют вам использовать уровень абстракции, которой ваш проект требует при обслуживании закрытой системы классов.