Main Content

用户定义的类

什么是类定义

MATLAB® 类定义是一个模板,用于描述该类所有实例共有的所有元素。类成员包括定义该类的属性、方法和事件。

使用代码块定义 MATLAB 类,并使用子代码块界定各个类成员的定义。有关这些代码块的语法信息,请参阅类组件

类成员的属性

属性可以修改类定义代码块中定义的类行为和成员行为。例如,您可以指定方法是静态的或者属性是私有的。以下各节说明这些属性:

类定义可以提供信息,例如继承关系或类成员的名称,而无需实际构造类。请参阅Class Metadata

有关属性语法的详细信息,请参阅指定属性

类的种类

有两个种类的 MATLAB 类 - 句柄类和值类。

  • 值类代表独立的值。值对象包含对象数据,并且不与对象的副本共享该数据。MATLAB 数值类型是值类。值对象在传递给函数并经其修改后,必须将修改后的对象返回给调用方。

  • 句柄类创建引用对象数据的对象。实例变量的各个副本引用同一个对象。句柄对象在传递给函数并经其修改后,可直接影响调用方工作区中的对象而无需返回对象。

有关详细信息,请参阅句柄类和值类的比较

构造对象

有关类构造函数的信息,请参阅类构造函数方法

有关创建对象数组的信息,请参阅创建和初始化对象数组

类的层次结构

有关如何定义类的层次结构的详细信息,请参阅Hierarchies of Classes — Concepts

classdef 语法

类定义是由位于开头的 classdef 关键字和位于结尾的 end 关键字界定的代码块。文件只能包含一个类定义。

下图显示了 classdef 代码块的语法。classdef 关键字前面只能有注释和空行。

Example syntax of classdef block

类代码

下面是一个简单的类定义,其中包含一个属性和一个构造函数方法,该方法在提供输入参数时设置属性的值。

classdef MyClass
   properties
      Prop
   end
   methods
      function obj = MyClass(val)
         if nargin > 0
            obj.Prop = val;
         end
      end
   end
end

要创建 MyClass 的对象,请将类定义保存在与该类同名的 .m 文件中,并使用必要的参数调用构造函数:

d = datestr(now);
o = MyClass(d);

使用圆点表示法访问属性值:

o.Prop
ans =

10-Nov-2005 10:38:14

构造函数应该支持无参数语法,以便 MATLAB 可以创建默认对象。有关详细信息,请参阅构造函数不要求输入参数的情况

有关类定义的各部分的详细信息,请参阅类组件

相关主题