类与对象

从用户角度考虑,用户并不需要了解面向对象编程的知识,就可编写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. ci完整集成

    http://www.cnblogs.com/zhanchenjin/p/5032218.html http://blog.csdn.net/williamwanglei/article/detail ...

  2. POJ 2452 Sticks Problem (暴力或者rmq+二分)

    题意:给你一组数a[n],求满足a[i] < a[k] < a[j] (i <= k <= j)的最大的 j - i . 析:在比赛时,我是暴力做的,虽然错了好多次,后来说理解 ...

  3. 10.11 NOIP模拟题(1)

    /* 离散化 差分 */ #include<bits/stdc++.h> #define N 4000007 using namespace std; int n,ans; int tmp ...

  4. [Swift通天遁地]一、超级工具-(9)在地图视图MKMapView中添加支持交互动作的标注图标

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. javascript实现引用数据类型的深拷贝和浅拷贝详解

    关于引用类型值的详解,请看另一篇随笔 https://www.cnblogs.com/jinbang/p/10346584.html 深拷贝和浅拷贝,也就是引用数据类型栈和堆的知识点.深浅拷贝的原型都 ...

  6. [转]ASP.NET MVC中实现多个按钮提交的几种方法

    本文转自:http://www.cnblogs.com/wuchang/archive/2010/01/29/1658916.html 有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能, ...

  7. C# 客户端读取共享目录文件

    控制台应用程序 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  8. js正则表达式限制文本框只能输入数字,小数点,英文字母

    1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafter ...

  9. 8月中旬之后的学习计划 --- react

    这段时间快活了,放纵了,玩hi了,接下来该好好的学习新知识了. 鉴于目前业界比较火的前端js框架有react.vue,决定先从react开始学习.之前有简单的接触过它的一些基本的语法知识,这次准备全面 ...

  10. 动态设置缩放比例和html字体大小

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...