Matlab中的handle 类

目录

说明

类属性

方法

公共方法

事件

示例

从 handle 派生类


说明

​        handle 类是遵守句柄语义的所有类的超类。句柄是引用 handle 类的对象的变量。多个变量可以引用同一个对象。

        handle 类是抽象类,这样无法直接创建该类的实例。使用 handle 类派生其他类,可以是其实例为句柄对象的具体类。

        要定义 handle 类,请使用以下 classdef 代码中的语法从 handle 派生类。

classdef MyHandleClass < handle
    ...
end

        从 handle 类派生使子类能够:

  • ​继承多个有用的方法 (Handle Class Methods)​

  • ​定义事件和侦听程序 (事件和侦听程序语法)​

  • ​定义动态属性 (动态属性 - 向实例添加属性)​

  • ​实现 set 和 get 方法 (为属性实现 set/get 接口)​

  • ​自定义复制行为 (Implement Copy for Handle Classes)

类属性

Abstract

true

ConstructOnLoad

true

HandleCompatible

true

方法

公共方法

addistener add创建绑定到事件源的事件侦听程序
listener 创建未绑定到事件源的事件侦听程序
notify 通知侦听程序事件正在发生
findobj 查找句柄对象
findprop 查找 meta.property 对象
delete 删除句柄对象
isvalid 确定有效句柄
relationaloperators 确定相等性或排序句柄对象
empty 创建指定类的空数组

事件

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

​在句柄对象即将销毁但在调用 delete 方法之前触发。

eventEventData

NotifyAccess: private

ListenAccess: public

示例

从 handle 派生类

        MySubclass 类派生自 handle 类。属性 set 方法不返回传递给该方法的对象,而值类有此要求:

classdef MySubclass < handle
   properties
      Client tcpclient
   end
   methods
      function set.Client(obj,c)
         if isa(c,'tcpclient')
            obj.Client = c;
         end
      end
   end
end

        创建 MySubclass 的对象,并将 tcpclient 对象分配给 Client 属性。

t = MySubclass;
t.Client = tcpclient('www.mathworks.com', 80);

句柄对象复制行为

        复制句柄对象不会复制与该对象关联的基础数据。副本是引用同一对象的另一个句柄。因此,如果函数修改以输入参数形式传递的句柄对象,则该修改操作会影响调用方工作区中的原始输入对象。

        与此相反,非句柄对象(即值对象)将数据与特定变量相关联。函数必须返回修改的值对象,以便在此函数的工作区外部更改对象。

销毁句柄对象
        当不存在对句柄对象的引用时,MATLAB® 会销毁该对象。可以显式移除句柄对象,只需调用其 delete 方法即可。handle 类可以让您控制销毁句柄对象时的情况,可以是在不存在任何引用时隐式销毁,或者删除该对象时显式销毁。

​为 ObjectBeingDestroyed 事件创建侦听程序

        任何代码都可以通过为句柄对象的 ObjectBeingDestroyed 事件定义侦听程序来响应该对象的待定删除操作。MATLAB 会在调用该对象的 delete 方法之前触发此事件。

你可能感兴趣的:(Matlab,matlab,开发语言)