Разнородный массив содержит объекты различных классов. Члены разнородного массива имеют общий суперкласс, но могут принадлежать различным подклассам. Смотрите класс matlab.mixin.Heterogeneous
для получения дополнительной информации о разнородных массивах. Класс matlab.mixin.Heterogeneous
является совместимым с указателем классом.
Можно вызвать только те методы, которые изолируются общим суперклассом на разнородных массивах (набор атрибута Sealed
к true
). Изолированные методы препятствуют тому, чтобы подклассы заменили те методы, и гарантируют, что методы обратились к разнородным массивам, имеют то же определение для целого массива.
Подклассы не могут заменить изолированные методы. В ситуациях, требующих, чтобы подклассы специализировали методы, заданные служебным классом, можно использовать шаблон разработки, называемый методом шаблона.
Предположим, что вы реализуете указатель совместимый класс, который работает с разнородными массивами. Этот подход позволяет вам изолировать открытые методы при обеспечении пути к каждому подклассу, чтобы специализироваться, как метод работает над каждым экземпляром подкласса. В указателе совместимый класс:
Задайте изолированный метод, который принимает разнородный массив как вход.
Задайте защищенный, абстрактный метод, который должен реализовать каждый подкласс.
В рамках изолированного метода вызовите переопределенный метод для каждого элемента массива.
Каждый подкласс в неоднородной иерархии реализует конкретную версию абстрактного метода. Конкретный метод обеспечивает специализированное поведение, требуемое конкретным подклассом.
Класс Printable
показывает, как реализовать подход метода шаблона:
classdef (HandleCompatible) Printable methods(Sealed) function print(aryIn) n = numel(aryIn); for k=1:n printElement(aryIn(k)); end end end methods(Access=protected, Abstract) printElement(objIn) end end