meta.abstractDetails

Пакет: meta

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

Синтаксис

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 в подклассе.