Delphi面向对象学习随笔一:类与对象的关系
作者:巴哈姆特
http://www.cnpack.org
(转载请注明出处并保持完整)
工作几年了,总想做点总结,于是有了这篇东西,叫随笔吧呵
    本文只是写写我对对象化的理解,主观成分很多,或许有错误,希望大家指正^_^
    PS: 本文的演示代码均以Delphi 的Object Pascal语法为准。

类与对象的关系
    要讨论类与对象的关系,需要先说一下什么是类,什么是对象。


    类、我认为是一个集合,和数学中的集合一样,是一类事物的统称,例如“人类”。
    在计算机语言中,类和数组或结构等数据类型一样是用户(程序员)自定义的数据类型,但是我们常说,类是复杂的自定义类型,而其他的数据类型则称为简单的自定义类型。原因是因为类是有行为的!
    另外、类是抽象存在的,就拿“人类”来说,我们都知道,在这个世界上是存在人类的,但是谁能说清楚“人类”长什么样?有多重?

对象
    对象则是类中的一个个体,例如我或者是正在看这篇文章的你,都是“人类”中的一个个体。
    计算机语言中,你是无法让一个类直接为你工作的(有些带类方法的特殊情况除外),就像世界上没有任何一个人有能力让整个“人类”为你工作一样;那么要让你的类为你工作,我们就需要这个类的一个对象,当我们有了一个对象以后,那么我们才能让他为我们做我们想要做的事。

实例化对象:
    我们都知道,在当前的计算机操作系统中,任何软件运行都需要一个内存块,也就是生存空间。同样,对象也要,就像我们生下来就要占地方一样。在你要让一个类的对象为你工作之前,你需要为他分配一个内存空间并创建它,这也是和其他的数据类型不一样的地方:

vari: Integer;      //定义一个整形变量is: TStringList; //定义一个TStringList类的对象s
begini:= 0;{ 这是对的,因为当定义了一个int类型(简单类型)的变量后,编译器会自动为你这个变量分配内存空间 }s.LoadFromFile(...);{ 错误,因为定义这个对象前,还没有为他创建内存空间,直接这样执行会引起一个内存错误 }
end;

正确的方法应该是,在使用类的对象前,要显示的调用类的构造方法:

CODE:s:= TStringList.Create;

或许有朋友会说,为什么不是s.Create呢?那是因为,在执行这条代码前,还没有为s分配内存空间,是不能访问他内部的数据成员的,而前面说了,“类是抽象存在的”,所以在编译器为你的代码打包成可执行文件后,TStringList在内存中已经存在了。当然这种“类名.方法名”的调用方式只能用在类(静态)方法上,而类的构造器的入口则是必须静态存在的。

属性、方法、事件
    属性是类的特性:例如红色的汽车,红色就是这辆汽车的颜色属性
    方法则是我们传统意义上的函数或过程,也就是类可以做的事:例如汽车可以向前开,也可以向后开
    事件则是在特定条件下,被动调用的代码段,也就是说,事件中我们指定填写的代码可能我们没有手动调用,但是它却可能在一个特定的条件下被对象内部调用而得到执行(当然不排除你显示的手动调用)。

暂时先说到这里,套用一句评书中的话:“预知后事如何,且听下回分解”^_^

转载于:https://www.cnblogs.com/keyvip/archive/2010/11/06/1870600.html

Delphi面向对象学习随笔一:类与对象的关系相关推荐

  1. Delphi面向对象学习随笔六:接口

    Delphi面向对象学习随笔六:接口   Delphi面向对象学习随笔六:接口 作者:巴哈姆特 (转载请注明出处并保持完整) 在对象化中,类的继承是一个非常强大的机制:而更加强大的继承机制应该是来自从 ...

  2. Delphi面向对象学习随笔七:COM

    作者:巴哈姆特 http://www.cnpack.org (转载请注明出处并保持完整) 上一篇,我们介绍了接口.如果没有接触过COM对象的话,你会觉得接口真的很麻烦,也许会有:"还不如直接 ...

  3. 学习java的第十三天,回顾方法的定义及调用,以及面向对象构造器、类与对象的关系等基础

    一.方法的定义 在前面的学习中,以及学习过了方法的定义,下面再进行回顾一下加深印象,因为后续面向对象都需要用到这些基础知识的! 主要是注意以下几点: 修饰符 返回类型 break:跳出switch,结 ...

  4. 面向对象类与对象的关系

    1.面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能.行为 面向对象:将功能封装进对象,强调具备了功能的对象 面向对象是基于面向过程的 面向过程例子: 把大象 ...

  5. Python学习笔记 (类与对象)

    Python学习笔记 (类与对象) 1.类与对象 面向对象编程语言类: 一个模板, (人类)-是一个抽象的, 没有实体的对象: (eg: 张三, 李四) 属性: (表示这类东西的特征, 眼睛, 嘴巴, ...

  6. 一个编程小白的Java SE学习日志 V——类、对象【极客BOY-米奇】

    文章目录 前言(转载请说明作者!)3.18~3.25编写 观看前自问 面向对象实现过程 面向对象三大特性 封装 继承 多态 如何理解类与对象(实例)的关系? 现实理解 如何理解对象? 现实理解 任务导 ...

  7. 【Java练习题汇总】《第一行代码JAVA》面向对象基础篇,汇总Java练习题——面向对象:特性、类与对象、数组、String、内部类... ~

    Java练习题 · 面向对象基础篇 1️⃣ 面向对象基础篇 1️⃣ 面向对象基础篇 一.填空题 面向对象的三大特征:_______ ._______ ._______. 类由_______和_____ ...

  8. Day10 面向对象 、类和对象的关系

    什么是面向对象 面向对象的方法主要是把事物给对象化,包括其属性和行为.面向对象编程更贴近实际生活的思想.总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象 ...

  9. Java面向对象编程篇1——类与对象

    Java面向对象编程篇1--类与对象 1.面向过程 1.1.概念 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了 1.2.优缺点 优点:性 ...

最新文章

  1. RDKit | 生物大分子的HELM表示法
  2. js监听audio播放完毕
  3. 可用等式为:html+java=jsp表示jsp[8]._java jsp
  4. h5移动端设备像素比dpr介绍
  5. PPTP与Open×××区别
  6. Spring之ApplicationContextAware接口详解
  7. UI设计灵感|引人注目的弹窗设计参考
  8. oracle32转64,Oracle10g下载地址--多平台下的32位和64位 (转)
  9. FCM算法的matlab程序
  10. 女性游戏市场崛起,B站能否能否抓住风口打造下一个FGO?
  11. 如何将PPT输出为高精度的图片
  12. 《Java 编程的逻辑》笔记——第1章 编程基础(一)
  13. 敏捷软件开发 - 原则、模式与实践 —— 设计模式(十)PROXY模式和STAIRWAY TO HEAVEN模式
  14. 转!!以太网方案设计
  15. 为小米盒子做的两个软件:桌面和浏览器
  16. CreateCompatibleDC(HDC hdc);
  17. 京东7天无理由退货换货运费应该谁来出是商家支付还是买家支付?
  18. TiDB函数和操作符
  19. Invariance Matters: Exemplar Memory for Domain AdaptivePerson Re-identification
  20. 旅途——Python流程控制

热门文章

  1. Linux get cpu number,Linux上获取CPU Core个数的实现
  2. tcp假连接_ESTABLISHED状态的连接收到 SYN 会回复什么?
  3. python创建矩阵_Python创建对称矩阵的方法示例【基于numpy模块】
  4. mac下载百度网盘文件限速_百度网盘限速怎么办 (20200412 )
  5. Mongodb最基础入门教程
  6. Springboot利用poi导出excel下载
  7. bzoj千题计划181:bzoj1878: [SDOI2009]HH的项链
  8. 【BZOJ 4103】 4103: [Thu Summer Camp 2015]异或运算 (可持久化Trie)
  9. Spring MVC 之@Controller@RequestMapping详解
  10. WINDOWS访问虚拟机RedHat搭配的Apache2服务器