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

方法

公共方法

addisteneradd创建绑定到事件源的事件侦听程序
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 方法之前触发此事件。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值