Matlab 中类的定义

文章目录

  • 1. 语法
  • 2. 说明
    • 2.1 classdef 代码块
      • 2.1.1 ClassAttributes
      • 2.1.2 SuperClass
    • 2.2 Properties 代码块
    • 2.3 Methods 代码块
    • 2.4 Events 代码块
    • 2.5 Enumeration 类

在 Matlab 中定义一个名为 classname 类,需要在类名之前用 classdef 关键字来声明,并以 end 结束类的定义。classdef 语句之前除了空行和注释不能有其它代码,代码需要保存在与类名相同的 m 文件中,即 classname.m 文件。

定义类的文件可以放在 MATLAB 搜索路径下的文件夹中,也可以放置在搜索路径文件夹内的类文件夹。类文件夹的名字以 @ 开头,加上类的名字(如 @myclass)。更多信息参考Class Files and Folders.

1. 语法

classdef classname
   properties
      PropName
   end
   methods
      methodName
   end
   events
      EventName
   end
   enumeration
      EnumName
   end
end

2. 说明

MATLAB 以代码块来组织类的声明与定义,下面分别介绍。

2.1 classdef 代码块

参考链接

classdef 代码块内包含了类定义的全部元素,包含在一个以类名为文件名的m文件中。其结构为:

classdef (ClassAttributes) ClassName < SuperClass

end

2.1.1 ClassAttributes

参考链接

ClassAttributes 代表类的属性,其可选的属性和值如下:

属性 可选值 说明
Abstract true,false
(default = false)
当设定为 true 表示该类是一个抽象类,不能被实例化。
更多信息见 Abstract Classes
AllowedSubclasses meta.class 对象或者是 meta.class 对象的元包向量 列表中给出了可以继承该类的 meta.class 对象。
类名前使用?来指定meta.class对象。
更多信息见 Specify Allowed Subclasses
ConstructOnLoad true,false
(default = false)
当设为 true,MATLAB 会在从 MAT 文件中加载对象时调用构造函数。因此,应用构造函数不会在无参数调用时产生错误。
更多信息见 Initialize Objects When Loading
HandleCompatible true,false
(default = false)
当设为 true,这个类可以作为句柄类的父类。所有句柄类都是句柄兼容的。
更多信息见 Support Both Handle and Value Subclasses
Hidden true,false
(default = false)
当设为 true,类不会出现在 superclasses 或 help 函数的输出结果中。
InferiorClasses meta.class 对象或者是 meta.class 对象的元包向量 使用该属性来确定在类中的优先等级。使用?来指定 meta.class 对象元包向量。
基本类总是比用户定义的优先等级高,不列在列表中。
更多参考Class Precedence 和 Dominant Argument in Overloaded Graphics Functions
Sealed true,false
(default = false)
当设定为 true,该类不能被继承。

说明:

  • 类属性不能被继承,所以父类的属性不会影响到子类。
  • 在括号中指定属性值,多个属性之间采用逗号分隔,如:

    classdef (Attribute1 = value1, Attribute2 = value2,…) ClassName

    end

2.1.2 SuperClass

SuperClass 为继承的类名字,如果要继承多个类,类与类之间用 & 连接。

2.2 Properties 代码块

参考链接

2.3 Methods 代码块

参考链接

2.4 Events 代码块

参考链接

2.5 Enumeration 类

参考链接

你可能感兴趣的:(Matlab)