类与对象

从用户角度考虑,用户并不需要了解面向对象编程的知识,就可编写Delphi应用程序。当用户在建立新窗体、添加新组件以及处理事件时,大部分相关代码会由Delphi自动产生。但是,知道语言及其细节,对理解Delphi正在做什么并完全掌握它是很有帮助的。特别是有关类的概念及用法是后面学习组件编程以及Delphi深入编程的基础。

类和对象是两个常用的术语,然而经常容易混淆,因此须要区分它们的定义。



类与前面介绍的记录类似,也是包含有各种域的结构化数据类型,然而,类包含方法。方法就是操纵对象域数据的过程或函数。类类型把数据和方法封装在一起。

一个类是一个数据类型。类就像记录一样,是一种数据结构。按最简单的理解,可以将类理解成一个记录。但实际上,类是一种定义不确切的术语,它常用来定义抽象的事务,是构成应用程序的项目,其内涵远比记录要丰富。在本书中,类经常可以被理解为可视化组件,如按钮、标签、表等。

了解类,最关键的是掌握类的特性。一个类,其最突出的特征有3个:封装性、继承性、多态性。

(1)封装性

对类最基本的理解是,类把数据和代码组合在同一个结构中,这就是类的封装性。将类的数据域封闭在类的内部,使得外部程序必须使用正确的方法才能对要读写的数据域进行访问。封装性意味着数据和代码一起出现在同一结构中,只有用类的方法才能接触到内部的私有数据。

(2)继承性

继承性的含义直接而且显然,它是指把一个新的类定义成已存在类的后代。新类通过继承得到了旧类的一切东西。在往新类中添加任何新内容以前,父类的每一个属性和方法都已存在于子类中,父类是创建子类的基石。

(3)多态性

多态性是在类体系中把设想和实现分开的手段。如果说继承性是系统的布局手段,那么多态性就是实现其功能的方法。多态性意味着同样的动作可以由多种方式来实现,这取决于执行该动作的类。多态性允许以类似的方式处理类体系中类似的类。根据特定的任务,一个应用程序被分解成许多类,多态性把高级设计处理的设想,如新类的创建、类在屏幕上的显示、程序运行的其他抽象描述等,留给知道该如何处理它们的类去实现。

在Object Pascal中,声明类类型使用保留字Class。类类型可以指定一个祖先类型,表示该类型是从这个指定的祖先类型继承下来的,例如:

Type

TMyObject=Class(TObject)

上例声明了一个名叫TMyObject的类类型,该类型是从类TObject继承下来的。注意,类类型的标识符一般以“T”打头,以区别于其他数据类型。另外,在Delphi中,大量的构造数据类型都是以“T”打头的。如果不指明祖先类,Delphi默认该类继承自TObject类。

       对象

对象是类的实例(instance),即由类定义的数据类型的变量。对象是实体,当程序运行时,对象占用一些内存。对象与类的关系就像变量与类型的关系。

例如,针对上文声明的类TMyObject,可以声明它的一个实例:

var

Aobject : TMyObject;

然后通过Aobject.属性或Aobject.方法就可以实现对这个对象的属性或方法的访问。

Object Pascal的语句分为两类:简单语句和构造语句

面向对象的编程语言基于3个基本概念:类、继承及多态。类就像记录一样,是一种数据结构


版权声明:本文为博主原创文章,未经博主允许不得转载。

Delphi语法的更多相关文章

  1. DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)

    函数重载重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同.实际上,编译器是通过检测参数来确定需要调用的例程.下面是从VCL 的数学单元(Math Unit)中摘录的一 ...

  2. delphi 语法 点滴总结clientdataset

    clientdataset   记录数 是从1 开始的. self.ClientDataSet5.RecNo   记录数 可以 读写 赋值. 随意改动. 哈哈 很方便.

  3. Delphi基础语法

    1.LowerCase(const s:string):string.UpperCase(const s:string):string 2.CompareStr(const s1,s2:string) ...

  4. Delphi / Pascal 语法知识干货

    ********************************************* Pascal.Delph干货 *************************************** ...

  5. Delphi_07_Delphi_Object_Pascal_基本语法_05_函数参数

    这里主要讨论Delphi中函数.方法的相关内容. 一.工程文件 { Delphi语法方法和函数 1.方法 2.函数 } program Routine; {$APPTYPE CONSOLE} uses ...

  6. Delphi内嵌汇编语言BASM精要(转帖)

    1 BASM概念简要  汇编语句由指令和零至三个表达式构成.表达式由常数(立即数).寄存器和标识符构成.例如: movsb        // 单指令语句 jmp @Here    // 一个表达式: ...

  7. Delphi 2010初体验,是时候抛弃Delphi 7了

    Delphi 2010已于近日由Embarcadero公司发布.作者Kim Madsen作为一名资深的Delphi开发者,在他的博客中谈到了Delphi 2010的新性能.它的使用感受以及对Delph ...

  8. Delphi 发展历史

    自然人的软件著作权,保护期为自然人终生及其died后50年:软件是合作开发的,截止于最后died的自然人died后第50年的12月31日.法人或者其他组织的软件著作权,保护期为软件首次发表之后50年, ...

  9. Delphi 2010

    Delphi 2010已早由Embarcadero公司发布.作者Kim Madsen作为一名资深的Delphi开发者,在他的博客中谈到了Delphi 2010的新性能.它的使用感受以及对Delphi语 ...

随机推荐

  1. python 之filter()函数

    filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filt ...

  2. [App Store Connect帮助]五、管理构建版本(3)在您提交以供审核前选择构建版本

    在提交 App 至“App 审核”前,请(从您为该版本上传的所有构建版本中)选择您想要提交的版本.一个 App Store 版本仅可关联一个构建版本.但是,在提交该版本至“App 审核”之前,您可以任 ...

  3. python实现汉诺塔程序

    # 汉诺塔思想笔记# 认识汉诺塔的目标:把A柱子上的N个盘子移动到C柱子# 递归的思想就是把这个目标分解成三个子目标# 子目标1:将前n-1个盘子从a移动到b上# 子目标2:将最底下的最后一个盘子从a ...

  4. Moco模拟服务器post&get请求 (二)

    1.moco启动命令如下:java -jar moco-runner-0.12.0-standalone.jar 协议类型 -p 端口号 -c json配置文件 2.带参数的get请求 [ { &qu ...

  5. ssm lodop打印图片不显示

    在打印预览的时候图片就是不显示 最终解决方案就是修改过滤器

  6. 公司6:JrVue重用布局

    JrVue是我们基于element重新封装的一套组件库;  为了提高开发效率, 方便对代码的统一管理和维护,  我们提供了一些统一的页面布局, 以及项目常用的中小型模块 我在master新拉一个分支J ...

  7. mac更改本地mysql登陆密码

    安装完mysql 之后,登陆以后,运行任何命令,提示 You must SET PASSWORD before executing this statement解决办法. step 1: SET PA ...

  8. jQuery——表单应用(2)

    多行文本框应用之高度变化 HTML: <!--表单-多行文本框应用-高度变化--> <!DOCTYPE html> <html> <head> < ...

  9. base64编码上传图片java后台接收实例

    原文地址:http://blog.csdn.net/tonyfreak/article/details/72522855 思路 前台传以data:image/jpeg;base64,开头的base64 ...

  10. MongoDB学习笔记~复杂条件拼接和正则的使用

    在大叔lind框架里有日志组件logger,而在日志实现方式上有file,mongodb,sql,json等方式,对分布式日志处理上大叔推荐使用mongodb进行存储,除了它的高效写入,灵活的结构外, ...