Delphi的OverRide、OverLoad和Virtual方法

【Delphi 基础知识 12】覆盖函数的使用 GUI开发: 在图形用户界面 (GUI) 应用程序中,你可能会定义一个基础的控件类,例如 TControl,并在派生类中覆盖或扩展一些方法,以适应不同的控件类型(按钮、文本框等)。框架和类库设计: 在设计类库或框架时,父类可能包含一些通用的方法,而子类可以通过覆盖这些方法来实现特定的行为,使得框架更加灵活和可扩展。数据库访问: 在数据库访问框架中,基类可以提供通用的数据库操作方法,而不同的数据库引擎可以通过覆盖这些方法来提供特定引擎的实现。基类可以定义插件接口,而插件通过覆盖这些接口方法来提供具体的实现。 阅读详情

Delphi的OverRide、OverLoad和Virtual方法

1.方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

2. Delphi 的函数覆盖(Override)与重载(overload)
而Delphi 就是用override 关键字来说明函数覆盖的。被覆盖的函数必须是虚(virtual)的,或者是动态(dynamic)的,也就是说该函数在声明时应该包含这两个指示字中的一个,比如:

procedure Draw; virtual;

在需要覆盖的时候,只需要在子类中用override 指示字重新声明一下就可以了。

procedure Draw; override;

3.virtual 虚类型
  dynamic 动态
  overload 重载
  override 重写 

4.★★★关于方法定义关键字的说明:

    如果在过程定义声明时包括了的关键字的含义:
    static 表示是静态方法;静态方法是方法的缺省类型,不能被覆盖;
    virtual 表示是虚拟方法;
    dynamic 表示是动态方法;
    这两类方法的共同点是都可以被覆盖(override),区别仅在于运行时调用方法时的派发机
制,virtual方法为执行速度做了优化,而dynamic方法则为代码大小做了优化;经常被覆盖的
方法应该定义为virtual方法;
    message 表示是消息处理方法;在关键字message后面的值指明了这个方法要响应的消息;
用消息处理方法来响应Windows的消息,这样就不用直接来调用它;
    override 表示是覆盖方法;要求祖先类中必须有该方法的定义,并且参数的顺序和类型
及返值的类型必须匹配;用于扩展祖先类中的该方法而不是取代它(如不调用祖先类中的该方
法则等同于取代);
    overload 表示是重载方法;用于一个类中有许多同名的方法带着不同的参数表的情形;
(属性的读写方法不能被重载);
    abstract 表示是抽象方法;是没有实现的方法,并且必须是virtual或dynamic方法,即
在abstract前面必须有virtual或dynamic关键字,其实现部分在派生类中;如
      procedure DoSomething; virtual; abstract;
    reintroduce表示是重新声明的方法;用于方法的名称与祖先类中的某个方法名称相同的情形;

5.virtual 和 dynamic定义的虚函数,都是为了子类override用的,
只不过它们的实现不一样
vitrual 占用的空间大点,但速度快些。dynamci正好相反.

stdcall是一种调用方式,标明了参数入stack的顺序和清除的方式,具体可看
Delphi的帮助. 

【Delphi 基础知识 11】重载函数的使用 总体而言,重载函数的使用范围很广泛,可以在许多不同的编程场景中提高代码的可读性和灵活性。字符串处理: 在字符串处理中,可能会有不同版本的函数,用于连接、比较、格式化等,以适应不同的参数类型或处理需求。重载函数可使代码更通用。容器类和集合操作: 在处理数组、列表、集合等数据结构时,重载函数可以处理不同类型的元素或执行不同的操作。API设计: 在设计类库或API时,重载函数可以提供更自然、直观的接口,以适应不同的使用情境。图形编程: 在图形编程中,可以使用重载函数来处理不同类型的图形对象,如圆形、矩形等。 阅读详情

相关推荐

从Gcode命令看3D打印机的‘大脑’:Marlin/Klipper固件是如何执行你的指令的?

本文深入解析3D打印机固件Marlin和Klipper如何执行Gcode指令,从语法解析到运动控制算法,再到温度管理,详细揭示了从指令到物理动作的转化过程。通过对比两大固件的设计哲学和性能优化技巧,帮助用户更好地理解和调优3D打印机的核心控制系统。

weixin_26763955的博客 382

delphi中对override(重写)和overload(重载)的一些看法

 重写就是用现在的方法覆盖了继承过来的方法,重载就是在不改变继承过来的方法的基础上重新添加一个方法名字一样,但参数或返回值是不一样的。下面举个例子:unit Unit1;interfacetype TStudent=classprivate//...    public//...procedure test;   implementation     procedure

xiao_jun_0820的专栏 1万+

阿里云导出的镜像raw转换成vmdk格式工具

阿里云导出的镜像raw转换成vmdk格式工具 1.安装java环境,安装教程不介绍了 2.raw2vmdk软件下载: 在我的链接里面: 3.使用 打开cmd.bat软件: java -jar raw2vmdk.jar (原镜像)C:\\images\\raw\\disk.img (转换的镜像)D:\\images\\vmdk\\disk.vmdk 4.vmware打开vmdk文件 ...

3843

delphi 之 override overload

delphi 之 override overload override 参数与返回值要与父类相同 overload 参数或返回值与父类不同 若参数有默认值, 例如:function GetIndexFileName: string; function GetIndexFileName(aIndexType:string = 'OFI'): string; 则调用时GetIndexFileName 会不清楚调用哪个函数 ...

weixin_46639851的博客 692

【人工智能】你知道什么是DeepSeek吗?你有去了解过DeepSeek吗?新手要入门DeepSeek的必经之路——初识DeepSeek

【人工智能】初识DeepSeek 详细介绍DeepSeek以及DeepSeek-R1

蒙奇D索大的博客 3370

一种独特机理驱动的化学反应分类器详解

代码位置第 47-300+ 行// atom_494: 硫原子,度数=2,化合价=2,无H,无电荷!// atom_35: 氧原子,度数=1,1个H,无电荷// atom_347: 氧原子,度数=2,无H,无电荷!→atom_494()[OD1h1+0]→atom_35()→atom_347()特性传统方法(MCS)NameRXN(机理驱动)匹配策略最大公共子结构原子类型模式 + 操作码时间复杂度O(n) - 线性扫描机理理解无内置化学机理原子映射需额外计算自动推导准确性结构相似。

ASKCOS博客 156

Delphi面向对象学习随笔三:overload与override

 Delphi面向对象学习随笔三:overload与override作者:巴哈姆特(转载请注明出处并保持完整)     首先,我想单独说明一下overload,为什么呢?因为overload和对象化关联不大,所以,我感觉单独提出来说明比较好。    我们都知道,在Pascal语法规则中,同一个UNIT里是不能存在两个同名的函数的,例如: function func(): Boolean;f

intelsong的专栏 446

Android16 3576 u盘固件升级功能添加

1.在u-boot/drivers/power/pmic/rk8xx.c。这里是读取power键的寄存器判断长短按。

tzj1058756809的博客 575

delphi的override、overload和virtual方法

1.方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

技术资料收集站 683

C# 与蓝牙 BLE 设备通信:基于 Windows.Devices.Bluetooth 实现手环/传感器数据读取

本文介绍了如何利用C#的Windows.Devices.Bluetooth命名空间实现与蓝牙BLE设备的通信。首先概述了BLE技术特性及其在物联网中的应用场景,包括智能穿戴设备和传感器。随后讲解了BLE的GATT协议架构,解析了服务(Service)和特性(Characteristic)的概念。文章重点展示了通过C#实现设备扫描、连接、数据读取的完整代码示例,并详细说明了如何使用通知(Notifications)功能实现实时数据更新。最后提供了订阅心率测量特性变化的实现代码,为开发者提供了完整的BLE设备通

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1323

做cellchat画图时自环的角度颠倒,如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 463

Delphi类的内部方法:overload、override、virtual、dynamic、abstract - 重载、多态、覆盖、静态、动态、抽象、类方法

以上代码只是简单的演示了类方法的继承,也许你会奇怪,为什么TBaseClass的构造方法Create没有用override关键字指定,却同样可以inherited来继承父类的该方法,其实不用override也是可以实现继承的(在这里如果你加上override反而会出语法错误,因为TObject类的Create是一个静态方法,而静态方法是不允许被override的),那么他们有什么不一样的呢?他们的语义是相同的,唯一不同的是,他们的实现方法和调用方法,这涉及到DELPHI的编译机制。Sub(1, 2);

yygyyygy1233的博客 934

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Delphi的OverRide、OverLoad、Virtual、Dynamic、Static方法

<br />1.方法的重写Overriding 和重载Overloading 是Java多态性的不同表现 。重写Overriding 是父类与子类之间多态性的一种表现,重载Overloading 是一个类中多态性的一种表现。<br /> 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding )。<br /> 子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。<br /> 如果在一个类中定义了多个同名的方法,它们或有

远方 992

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

转: Delphi的OverRide、OverLoad和Virtual方法

http://blog.youkuaiyun.com/ckli/article/details/2201418 override 重写 也叫覆盖 1.方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。 如果在子类中定义某方法与其父类有相同的名称和参数,我...

weixin_34404393的博客 134

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Delphi的OverRide、OverLoad和Virtual方法(转)

http://www.cnblogs.com/IceKernel/articles/2270300.html#commentform 1.)方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。  如果在子类中定义某方法与其父类有相同的名称和参数,我...

weixin_30600503的博客 175

Delphi面向对象学习随笔三:overload与override(转)

====================================================== 注:本文源代码点此下载 ====================================================== delphi面向对象学习随笔三:overload与override 作者:巴哈姆特 (转载请注明出处并保持完整) 首先,我想单独说明一下ov

javazhuanzai的专栏 318

Delphi重载,覆盖,多态

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34393428的博客 418
上一篇: Delphi的DLL技巧汇集
下一篇: Delphi数据库处理组件BDE、ADO、InterBase和dbExpress详细说明
CKLi
博客等级 码龄22年 51粉丝 10原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值