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.property и meta.method.

Класс может быть абстрактным, не задавая абстрактных методов или свойств, если он объявляет атрибут класса 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 для абстрактных методов methodTwo и methodOne.

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

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