Установка допустимых подклассов

Почему управление позволенные подклассы

Определение класса может задать список классов, которые оно позволяет как подклассы. Классы не в списке не могут быть заданы как подкласс класса. Чтобы задать позволенные подклассы, используйте 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 помнит класс, на который ссылаются в случае, если это становится доступным позже.

Примечание

Если MATLAB не находит ни одного из классов в позволенном списке подклассов, классом является эффективно Sealed. Запечатанный класс эквивалентен AllowedSubclasses = {}.

Используйте meta.class свойство RestrictsSubclassing определить, является ли классом Sealed или задает AllowedSubclasses.

Определение изолированной иерархии классов

AllowedSubclasses атрибут позволяет вам задать иерархию запечатанного класса путем изоляции позволенных подклассов:

classdef (AllowedSubclasses = {?SubClass1,?SubClass2}) SuperClass
   ...
end

Задайте позволенные подклассы как Sealed:

classdef (Sealed) SubClass1
   ...
end

classdef (Sealed) SubClass2
   ...
end

Иерархии запечатанного класса позволяют вам использовать уровень абстракции, которой ваш проект требует при обслуживании закрытой системы классов.

Похожие темы