Разнородный массив содержит объекты разных классов. Представители из разнородного массива имеют общий суперкласс, но могут принадлежать к различным подклассам. Смотрите matlab.mixin.Heterogeneous
Класс для получения дополнительной информации о разнородных массивах. The matlab.mixin.Heterogeneous
класс является классом, совместимым с указателем.
Можно вызвать только те методы, которые запечатаны общим суперклассом на разнородных массивах (Sealed
для атрибута задано значение true
). Запечатанные методы препятствуют переопределению подклассов этими методами и гарантируют, что методы, вызываемые на разнородных массивах, имеют одно и то же определение для всего массива.
Подклассы не могут переопределить запечатанные методы. В ситуациях, требующих, чтобы подклассы специализировали методы, заданные классом утилиты, можно использовать шаблон проекта, называемый методом шаблона.
Предположим, что вы реализуете совместимый с указатель класс, который работает с разнородными массивами. Этот подход позволяет вам запечатывать общедоступные методы, предоставляя способ для каждого подкласса специализироваться на работе метода с каждым образцом подкласса. В классе, совместимом с указателем:
Задайте запечатанный метод, который принимает разнородный массив как вход.
Задайте защищенный, абстрактный метод, который должен реализовать каждый подкласс.
В рамках запечатанного метода вызовите переопределенный метод для каждого элемента массива.
Каждый подкласс в гетерогенной иерархии реализует конкретную версию абстрактного метода. Конкретный метод обеспечивает специализированное поведение, требуемое конкретным подклассом.
The 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