exponenta event banner

meta.abstractDetails

Пакет: мета

Поиск абстрактных методов и свойств

Синтаксис

meta.abstractDetails(ClassName)
meta.abstractDetails(mc)
absMembers = meta.abstractDetails(___)

Описание

meta.abstractDetails(ClassName) отображает список абстрактных методов и свойств для класса с именем ClassName. Используйте полностью указанное имя для классов в пакетах. MATLAB ® отображает все общедоступные и защищенные абстрактные методы и свойства, включая объявленныеHidden.

meta.abstractDetails(mc) отображает список абстрактных методов и свойств для класса, представленного meta.class объект mc.

absMembers = meta.abstractDetails(___) возвращает массив объектов метакласса, соответствующих абстрактным членам класса, и может включать любой из входных аргументов в предыдущих синтаксисах. Если класс имеет как абстрактные методы, так и абстрактные свойства, absMembers является гетерогенным массивом класса meta.MetaData содержа meta.method и meta.property объекты.

Класс может быть абстрактным без определения каких-либо абстрактных методов или свойств, если он объявляет Abstract атрибут класса. В этом случае meta.abstractDetails не возвращает абстрактные элементы для этого класса, но класс является абстрактным. Дополнительные сведения см. в разделе Определение абстрактности класса.

Входные аргументы

ClassName

Имя класса, указанное как символьный вектор или строковый скаляр.

mc

meta.class объект, представляющий класс (например, ?MyClass).

Выходные аргументы

absMembers

Массив meta.class объекты, представляющие абстрактные элементы класса

Примеры

свернуть все

Определите класс, AbsBase, с абстрактным свойством:

classdef AbsBase
   properties (Abstract)
      Prop1
   end
   methods(Abstract)
      result = methodOne(obj)
      output = methodTwo(obj)
   end
end

Передать имя класса (AbsBase) в качестве char вектор:

meta.abstractDetails('AbsBase')

meta.abstractDetails отображает имена абстрактных свойств и методов, определенных в классе AbsBase.

Abstract methods for class AbsBase:
    methodTwo   % defined in AbsBase
    methodOne   % defined in AbsBase

Abstract properties for class AbsBase:
    Prop1   % defined in AbsBase

Пройти а meta.class объект, представляющий AbsBase и возвращает объекты метакласса для абстрактных элементов. Использовать определение AbsBase из предыдущего примера.

mc = ?AbsBase;
absMembers = meta.abstractDetails(mc);

absMembers является гетерогенным массивом, содержащим meta.property объект для Prop1 абстрактное свойство и meta.method объекты для methodOne и methodTwo абстрактные методы.

Перечислите имена объектов метакласса.

for k = 1:length(absMembers)
   disp(absMembers(k).Name)
end
methodTwo
methodOne
Prop1

Выведите SubAbsBase класс от AbsBase, которая определена в предыдущем примере.

classdef SubAbsBase < AbsBase
   properties 
      SubProp = 1;
   end
   methods
      function result = methodOne(obj)
         result = obj.SubProp + 1;
      end
   end
end

Отображение имен абстрактных элементов, наследуемых SubAbsBase.

meta.abstractDetails('SubAbsBase')

Abstract methods for class SubAbsBase:
    methodTwo   % defined in AbsBase

Abstract properties for class SubAbsBase:
    Prop1   % defined in AbsBase

Сделать SubAbsBase класс бетона, нужно реализовать конкретные версии methodTwo и Prop1 в подклассе.