Main Content

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(___) は、クラスの抽象メンバーに対応するメタクラス オブジェクトの配列を返し、前述の構文の任意の入力引数を含むことができます。クラスが抽象メソッドと抽象プロパティの両方をもつ場合、absMembersmeta.method および meta.property のオブジェクトを含む meta.MetaData クラスの異種混合配列です。

Abstract クラスの属性が宣言されていれば、抽象メソッドまたは抽象プロパティが定義されていなくても、クラスは抽象クラスとなり得ます。この場合、meta.abstractDetails はそのクラスの抽象メンバーを返しませんが、そのクラスは抽象クラスです。詳細については、クラスが抽象かどうかの判定を参照してください。

入力引数

ClassName

クラスの名前。文字ベクトルまたは string スカラーとして指定します。

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

AbsBase クラスを表す meta.class オブジェクトを渡し、抽象メンバーのメタクラス オブジェクトを返します。前述の例の AbsBase クラスの定義を使用します。

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

absMembers は、Prop1 抽象プロパティの meta.property オブジェクトと、methodOne および methodTwo 抽象メソッドの meta.method オブジェクトを含む、異種混合配列です。

メタクラス オブジェクトの名前をリストします。

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

前述の例に定義されている AbsBase から SubAbsBase クラスを派生させます。

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 の具象クラスを実装する必要があります。