(delphi11最新学习资料) Object Pascal 学习笔记---第11章第2节 (高级接口技术)

11.2 高级接口技术

​ 为了进一步深入探讨接口的功能,在我们研究现实世界接口的使用场景之前,有必要介绍一些接口的高级技术特性,例如类如何实现多个接口,或如何用不同名称的方法实现接口方法(以防名称冲突)。
​ 另一个重要的功能是接口可以有属性。为了演示所有这些与接口相关的高级功能,我编写了 IntfDemo 示例。

11.2.1 接口的属性

​ 本节的代码基于两个不同的接口 IWalker 和 IJumper,这两个接口都定义了一些方法和一个属性。

​ 接口属性只是一个映射到一个读取和写入方法的名字。与类不同的是,你不能将接口属性映射到字段,因为接口本身不能有任何代码。

​ 这里是实际的接口定义:

IWalker = interface['{0876F200-AAD3-11D2-8551-CCA30C584521}']function Walk: string;function Run: string;procedure SetPos(Value: Integer);function GetPos: Integer;property Position: Integer read GetPos write SetPos;
end;IJumper = interface['{0876F201-AAD3-11D2-8551-CCA30C584521}']function Walk: string;function Jump: string;procedure SetPos(Value: Integer);function GetPos: Integer;property Position: Integer read GetPos write SetPos;
end;

​ 当你实现一个带属性的接口时,你只需实现属性实际的访问方法:

TRunner = class(TInterfacedObject, IWalker)
privateFPos: Integer;
publicfunction Walk: string;function Run: string;procedure SetPos(Value: Integer);function GetPos: Integer;
end;

​ 实现代码并不复杂(您可以在 IntfDemo 示例中找到),其中的Run方法包括计算新位置和显示正在执行的操作:

function TRunner.Run: string;
beginInc(FPos, 2);  //计算新位置Result := FPos.ToString + ': Run';
end;

​ 使用 IWalker 接口及其 TRunner 实现的演示代码如下:

varIntf: IWalker;
beginIntf := TRunner.Create;Intf.Position := 0;Show(Intf.Walk);Show(Intf.Run);Show(Intf.Run);
end;

​ 输出结果应该 不会意外:

1: Walk
3: Run
5: Run

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Pychart】jupyter中pyecharts无法显示问题无法使用/No module named pyecharts

无法显示或No module,一般就是更换python版本后,没有在新的python里安装jupyter;另外原因就是引用方式问题,就是import方式不对;都解决后,有报错没有add,或者str问题。 最后的解决方案竟然是bin…

智慧旅游推动旅游服务智慧化转型:借助智能科技的力量,实现旅游资源的精准匹配和高效利用,为游客提供更加便捷、舒适的旅游环境

目录 一、引言 二、智慧旅游的定义与特点 (一)智慧旅游的定义 (二)智慧旅游的特点 三、智能科技在旅游服务中的应用 (一)大数据分析助力旅游决策 (二)人工智能实现个性化推荐…

Android 网络请求 实现

Android 网络请求 实现 一、背景 在Android开发中,网络请求是一个非常常见的需求。应用程序可能需要与远程服务器通信来获取数据、上传文件、验证用户身份等等。背景下,Android应用通常会面临以下几个主要情况和挑战: ①数据交互: 许多应用程序需要从服务器获取数据,例…

杰发科技AC7840——软件Sent_HAL39X

0. 序 截止2024.5.8,杰发的MCU没有硬件Sent功能,因此使用PWM模拟Sent来试试。 测试下7840的软件sent功能。 参考链接:SENT协议应用笔记 - TechPlus汽车工坊的文章 - 知乎 SENT协议 1. Sent功能测试 使用提供的软件Sent代码在7840上测试&a…

医疗图像处理2023年CVPR:Label-Free Liver Tumor Segmentation-无标签肝肿瘤分割

目录 一、摘要 二、介绍 三、相关工作 四、网络框架 1.位置选择 2.纹理处理 3.形状生成 4.后处理 5.参数设计 五、实验 1.数据集: 2.评价指标: 3.实现: 4.结果: 六、结论 一、摘要 通过在CT扫描中使用合成肿瘤&am…

8086 汇编学习 Part 9

端口的读写 CPU 的邻居 CPU 内部的寄存器内存单元端口(各种接口卡、网卡,显卡,主板上的接口芯片等) 各种芯片工作时,都有一些寄存器由 CPU 读写从 CPU 角度,将各寄存器当端口,并统一编制CPU …

openGauss学习笔记-278 openGauss性能调优-实际调优案例07-改写SQL消除子查询(案例2)

文章目录 openGauss学习笔记-278 openGauss性能调优-实际调优案例07-改写SQL消除子查询(案例2)278.1 现象描述278.2 优化说明openGauss学习笔记-278 openGauss性能调优-实际调优案例07-改写SQL消除子查询(案例2) 278.1 现象描述 如下SQL语句: UPDATE normal_date n SET…

webservice和TCP类型接口测试

1.webservice类型接口 1.1.webservice类型接口介绍 Web服务(WebService)是一种基于网络的应用程序接口(API),可通过网络来进行通信和交互。它们使用标准化的协议和格式来进行通信,最常见的是使用XML&#…

puppyteer

puppyteer 今天自己加了一个需求,尝试使用puppyteer来实现自动化录制视频,一开始的想法是先开启录屏工具,在使用puppyteer来做浏览器自动化,经过调研后发现有Puppeteer 屏幕录像机库,直接使用puppeteer-screen-record…

Java设计模式-工厂

Java设计模式中,工厂模式主要包括普通工厂模式以及抽象工厂模式,普通工厂模式是用于制造输出不同类型的对象,抽象工厂模式是用于制造输出不同类型的普通工厂,本文主要描述工厂模式的基本用法。 如上所示,使用普通工厂模…

SSH简介:网络安全的守护者

SSH简介:网络安全的守护者 SSH(Secure Shell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他网络服务。它使用加密技术来保护数据传输的完整性和机密性,防止潜在的窃听和篡改。SSH广泛应用于服务器…

解锁电脑潜能,提高办公效率:这个桌面助手您可千万不能错过!

文章目录 📖 介绍 📖📝 你是否有这些烦恼?📝 一站式效率工具平台📝 插件市场:无限扩展的可能📝 如何开始使用🎯 结语 ⚓️ 相关链接 ⚓️ 📖 介绍 &#x1f4…

知乎广告推广开户流程全攻略及费用详解

知乎作为一个高质量的知识分享平台,具有大量高教育背景和购买力的用户群体,成为了众多品牌广告主心仪的目标营销阵地。想要在知乎上精准高效地推广产品或服务,首先需要了解其广告推广的开户流程与相关费用。 一、知乎广告开户流程 1、前期准…

Mysql 数据库 开发规范

(一)建表规约 强制规约 1. 表达是否概念的字段 使用 is_xxx(is_used) 的方式命名 2. 若字段的数据类型为非负数 类型则为 unsigned 3. 若字段的数据类型为 unsigned tinyint 1表示是,0 表示否 4 . 表名、字段名需 使用小写字母 或 数字 正…

ansible批量运维管理

Ansible是一种自动化运维工具,基于Python开发,主要用于自动化IT任务,如配置管理、应用程序部署、软件升级和系统管理等。它集合了众多运维工具(如puppet、cfengine、chef、func、fabric)的优点,实现了批量系…

AI终端设备的自动化分级

摘要: 大语言模型(LLM)被认为是通用人工智能(AGI)的潜在火花,为构建通用人工智能代理带来了希望。在此基础上,客户端设备在人工智能的帮助下不断发展,从基于应用程序(AP…

Centos 中如何汉化man命令

刚学Linux,记不住命令和选项,很依赖里面的 man 查看命令,但因为着实看不懂,有没有什么办法把man查看命令的信息改成中文 在CentOS 7中,你可以通过安装man-pages-zh包来获取中文的man手册。以下是具体的步骤&#xff1a…

外置网卡设置为Ad-hoc模式,实现多台电脑互相通信

三台电脑Ad-hoc通信 iwconfig查看网卡型号 ifconfig查看网卡ip 第一台电脑 sudo systemctl stop NetworkManager sudo iwconfig wlx90de803014a8 mode ad-hoc sudo iwconfig wlx90de803014a8 essid "CPS-IBSS" sudo iwconfig wlx90de803014a8 channel 1 sudo ip a…

Redis-1 缓存穿透、缓存击穿、缓存雪崩

缓存穿透 一.数据查询的流程 程序根据请求查询数据时,会先到redis中查询,如果redis中查到了目标数据,则直接返回;如果redis中没有目标数据,则到mysql中查找,找到目标数据后返回,同时将该数据写…

stm32f103zet6_RTC_1_介绍

RTC简介 实时时钟是一个独立的定时器。 RTC模块拥有一组连续计数的计数器,在相应软件配置下,可 提供时钟日历的功能。 修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复…