目录
类组件
类构建块
MATLAB® 将类定义代码组织成模块化代码块,以关键字分隔。所有关键字都有相关联的 end
语句:
-
classdef...end - 所有类组件的定义
-
properties...end - 属性名称声明、属性特性设定、默认值赋值
-
methods...end - 方法签名、方法属性和函数代码的声明
-
events...end - 事件名称和属性的声明
-
enumeration...end - 枚举类的枚举成员和枚举值的声明。
properties、methods、events 和 enumeration 只是 classdef 代码块内的关键字。
类定义代码块
classdef 代码块包含文件中的类定义,以 classdef 关键字开头,以 end 关键字结尾。
classdef (ClassAttributes) ClassName < SuperClass
...
end
例如,以下 classdef 定义名为 MyClass 的类,该类是 handle 类的子类,但它不能用于派生子类:
classdef (Sealed) MyClass < handle
...
end
属性代码块
properties 代码块(每个唯一的特性设定集对应一个)包含属性定义,其中包括可选的初始值。属性代码块以 properties 关键字开始,以 end 关键字结束。
classdef ClassName
properties (PropertyAttributes)
...
end
...
end
例如,以下类定义名为 Prop1 的属性,该属性具有私有访问权限,默认值等于 date 函数的输出。
classdef MyClass
properties (SetAccess = private)
Prop1 = date
end
...
end
方法代码块
methods 代码块(每个唯一的属性设定集对应一个)包含类方法的函数定义。方法代码块以 methods 关键字开始,以 end 关键字结束。
classdef ClassName
methods (MethodAttributes)
...
end
...
end
例如:
classdef MyClass
methods (Access = private)
function obj = myMethod(obj)
...
end
end
end
事件代码块
events 代码块(每个唯一的属性设定集对应一个)包含该类声明的事件的名称。事件代码块以 events 关键字开始,以 end 关键字结束。
classdef ClassName
events (EventAttributes)
EventName
end
...
end
例如,以下类定义名为 StateChange 的事件,ListenAccess 设置为 protected:
classdef EventSource
events (ListenAccess = protected)
StateChanged
end
...
end
完整类
完整的类定义包含属性、方法和事件代码块的任意组合。
classdef (Sealed) MyClass < handle
properties (SetAccess = private)
Prop1 = datenum(date)
end
properties
Prop2
end
methods
function obj = MyClass(x)
obj.Prop2 = x;
end
end
methods (Access = {?MyOtherClass})
function d = myMethod(obj)
d = obj.Prop1 + x;
end
end
events (ListenAccess = protected)
StateChanged
end
end
枚举类
枚举类是一种特化类,用于定义代表单个类型值的固定名称集。枚举类使用 enumeration 代码块来包含该类所定义的枚举成员。
枚举代码块以 enumeration 关键字开始,以 end 关键字结束。
classdef ClassName < SuperClass
enumeration
EnumerationMember
end
...
end
例如,以下类定义两个枚举成员,分别代表逻辑值 false 和 true:
classdef Boolean < logical
enumeration
No (0)
Yes (1)
end
end