Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

meta.class 类

命名空间: meta
超类: meta.MetaData

描述 MATLAB

描述

meta.class 类提供一种获取有关 MATLAB® 类的描述性信息的方式。通过为特定类创建 meta.class 对象,您可以获得有关类定义的信息。

meta.class 对象的某些属性包含在对应的 MATLAB 类中定义的类属性的值。查询这些属性可获取由 classdef 行上的类定义通过语法指定的信息。

其他属性包含由类定义的属性、方法和事件的列表,以及关于如何定义类的其他信息。

您无法设置 meta.class 对象属性的值。您只能查询属性。

可使用以下选项通过类的实例或使用类名称创建 meta.class 对象:

  • metaclass(obj) - 返回一个 meta.class 对象,表示以参数形式传递的对象。

  • ?ClassName - 返回一个表示指定类的 meta.class 对象。

  • meta.class.fromName('ClassName') - 静态方法,返回一个表示指定类的 meta.class 对象。

您不能通过调用 meta.class 对象的构造函数直接对该对象进行实例化。

meta.class 类是一个 handle 类。

类属性

Abstract
true
HandleCompatible
true

有关类属性的信息,请参阅类属性

属性

全部展开

类的名称,以字符向量形式返回。此属性返回的名称包含类包。

数据类型: char

类的简短描述,以字符向量形式返回。对于用户定义的类,此属性的文本来自类定义中的注释。如果没有注释,该属性将返回空字符向量。有关如何包含类的帮助文本的详细信息,请参阅自定义帮助文本

类的详细描述,以字符向量形式返回。对于用户定义的类,此属性的文本来自类定义中的注释。如果没有注释,该属性将返回空字符向量。有关如何包含类的帮助文本的详细信息,请参阅自定义帮助文本

类是否对检查工具隐藏,以逻辑值 truefalse 形式返回。如果设置为 true,则类不会出现在显示类名的 MATLAB 命令或工具的输出中。但是,您可以通过编程方式访问类。

数据类型: logical

类是否可以子类化,以逻辑值形式返回。如果 Sealedtrue,则此类无法子类化。

数据类型: logical

类抽象属性的值,以逻辑值形式返回。如果类或任何属性或方法的 Abstract 属性设置为 true,则此属性的值为 true。有关抽象类的信息,请参阅抽象类和类成员

数据类型: logical

类是否为枚举类,以逻辑值形式返回。如果 true,则此类为枚举类。有关枚举类的详细信息,请参阅定义枚举类

数据类型: logical

加载时调用构造函数,以逻辑值形式返回。如果设置为 true,MATLAB 将会在从 MAT 文件加载对象时自动调用类构造函数。要启用 ConstructOnLoad,构造函数必须支持不带输入参数的调用。有关详细信息,请参阅对象的保存和加载过程

数据类型: logical

类是否与句柄兼容,以逻辑值形式返回。如果为 true,则此类是与句柄兼容的类。有关与句柄兼容的类的详细信息,请参阅Handle Compatible Classes

数据类型: logical

指定为低于此类的类,以 meta.class 对象的元胞数组形式返回。有关类优先级的信息,请参阅Class Precedence

数据类型: meta.class

包含类的包,以 meta.package 对象形式返回。如果类不在包中,则此属性包含空 meta.package 对象。有关包的详细信息,请参阅包命名空间

数据类型: meta.package

为类定义的别名的列表,以字符串数组形式返回。别名按从最旧到最新的顺序排列。

类是否限制子类化,以逻辑值 truefalse 形式返回。当类通过以下方式限制子类化时,MATLAB 将此属性设置为 true

  • Sealed 属性设置为 true

  • 使用 AllowedSubclasses 属性指定可子类化的类。

有关限制子类化的详细信息,请参阅Specify Allowed Subclasses

数据类型: logical

为类定义的属性,以 meta.property 对象数组形式返回。meta.property 对象描述由此类定义的每个属性,包括所有继承的公共属性和受保护属性。有关属性的详细信息,请参阅属性

数据类型: meta.property

为类定义的方法,以 meta.method 对象数组形式返回。meta.method 对象描述此类定义的每个方法(包括继承的公共方法和受保护方法)。有关方法的更多信息,请参阅类设计中的方法

数据类型: meta.method

为类定义的事件,包括所有继承的事件,以 meta.event 对象数组形式返回。只有句柄类可以定义事件,因此对于值类,此属性是空 meta.event 对象。所有 handle 类都继承 ObjectBeingDestroyed 事件。有关事件的详细信息,请参阅事件

数据类型: meta.event

枚举成员的名称和隐藏状态,以 meta.EnumeratedValue 对象数组形式返回。访问对应成员 meta.EnumeratedValue 对象的 NameHidden 属性以获取信息。有关详细信息,请参阅枚举

数据类型: meta.EnumeratedValue

此类的直接超类,以由 meta.class 对象组成的数组形式返回。meta.class 对象描述派生此类的每个直接超类。有关子类化的详细信息,请参阅子类定义

数据类型: meta.class

方法

全部展开

事件

事件名称触发器事件数据事件属性
InstanceCreated

每当创建由 meta.class 描述的类的实例时,都会发生此事件。

此事件在所有构造函数执行完后立即发生。

event.ClassInstanceEvent

NotifyAccess: private

ListenAccess: public

InstanceDestroyed

每当销毁由 meta.class 描述的类的实例时,都会发生此事件。

此事件在任何析构函数执行之前立即发生。

event.ClassInstanceEvent

NotifyAccess: private

ListenAccess: public

示例

全部折叠

使用自检来获取关于 IntrospectionExample 类的继承信息。

IntrospectionExample 的代码

classdef IntrospectionExample
    % IntrospectionExample  Performs basic functions on two numbers
    % This class can return the sum and product of its two properties.
    properties
        % a  First property
        % First of two numeric properties
        a {mustBeNumeric} = 0
        
        % b  Second property
        % Second of two numeric properties
        b {mustBeNumeric} = 0
    end
    
    methods
        function sum = addNumbers(obj)
            % addNumbers  Sum the properties
            %   Finds the sum of properties a and b.
            sum = obj.a + obj.b;
        end
        function prod = multNumbers(obj)
            % multNumbers  Multiply the properties
            %   Finds the product of properties a and b.
            prod = obj.a*obj.b;
        end
    end
end

创建并检查元类实例

创建 IntrospectionExample 的一个元类实例。

mc = ?IntrospectionExample
mc = 
  class with properties:

                     Name: 'IntrospectionExample'
              Description: 'Performs basic functions on two numbers'
      DetailedDescription: '  This class can return the sum and product of its two properties.'
                   Hidden: 0
                   Sealed: 0
                 Abstract: 0
              Enumeration: 0
          ConstructOnLoad: 0
         HandleCompatible: 0
          InferiorClasses: {0x1 cell}
        ContainingPackage: [0x0 meta.package]
                  Aliases: [0x1 string]
     RestrictsSubclassing: 0
             PropertyList: [2x1 meta.property]
               MethodList: [4x1 meta.method]
                EventList: [0x1 meta.event]
    EnumerationMemberList: [0x1 meta.EnumeratedValue]
           SuperclassList: [0x1 meta.class]

IntrospectionExample 的属性摘要显示,在 MethodList 属性中描述了四种方法。访问 mcMethodList 属性,并显示所有四个类方法的名称。

for i = 1:4
mc.MethodList(i).Name
end
ans = 
'multNumbers'
ans = 
'addNumbers'
ans = 
'IntrospectionExample'
ans = 
'empty'

版本历史记录

在 R2008a 中推出

全部展开