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