• Matlab中的handle 类


    目录

    说明

    类属性

    方法

    公共方法

    事件

    示例

    从 handle 派生类


    说明

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

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

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

    1. classdef MyHandleClass < handle
    2. ...
    3. 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 方法不返回传递给该方法的对象,而值类有此要求:

    1. classdef MySubclass < handle
    2. properties
    3. Client tcpclient
    4. end
    5. methods
    6. function set.Client(obj,c)
    7. if isa(c,'tcpclient')
    8. obj.Client = c;
    9. end
    10. end
    11. end
    12. end

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

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

    句柄对象复制行为

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

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

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

    ​为 ObjectBeingDestroyed 事件创建侦听程序

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

  • 相关阅读:
    深入学习JVM底层(四):类文件结构
    【Notepad】Notepad++ 安装XML/Json插件,格式化xml/json文件
    VSCode中配置命令行参数
    LeetCode 509 斐波那契数(动态规划)
    XCTF---MISC---Misc文件类型
    【Linux】最新CentOS8内核升级
    35、Flink 的 Formats 之CSV 和 JSON Format
    jQuery
    项目的基本知识
    【操作系统】系统启动流程
  • 原文地址:https://blog.csdn.net/jk_101/article/details/111311127