• Delphi面向对象学习随笔一:类与对象的关系(转)


    http://www.cnblogs.com/keyvip/archive/2010/11/06/1870600.html
    
    Delphi面向对象学习随笔一:类与对象的关系
    作者:巴哈姆特
    http://www.cnpack.org
    (转载请注明出处并保持完整)
    工作几年了,总想做点总结,于是有了这篇东西,叫随笔吧呵
        本文只是写写我对对象化的理解,主观成分很多,或许有错误,希望大家指正^_^
        PS: 本文的演示代码均以Delphi 的Object Pascal语法为准。
    
    类与对象的关系
        要讨论类与对象的关系,需要先说一下什么是类,什么是对象。
    
      类:
        类、我认为是一个集合,和数学中的集合一样,是一类事物的统称,例如“人类”。
        在计算机语言中,类和数组或结构等数据类型一样是用户(程序员)自定义的数据类型,但是我们常说,类是复杂的自定义类型,而其他的数据类型则称为简单的自定义类型。原因是因为类是有行为的!
        另外、类是抽象存在的,就拿“人类”来说,我们都知道,在这个世界上是存在人类的,但是谁能说清楚“人类”长什么样?有多重?
    
      对象:
        对象则是类中的一个个体,例如我或者是正在看这篇文章的你,都是“人类”中的一个个体。
        计算机语言中,你是无法让一个类直接为你工作的(有些带类方法的特殊情况除外),就像世界上没有任何一个人有能力让整个“人类”为你工作一样;那么要让你的类为你工作,我们就需要这个类的一个对象,当我们有了一个对象以后,那么我们才能让他为我们做我们想要做的事。
    
      实例化对象:
        我们都知道,在当前的计算机操作系统中,任何软件运行都需要一个内存块,也就是生存空间。同样,对象也要,就像我们生下来就要占地方一样。在你要让一个类的对象为你工作之前,你需要为他分配一个内存空间并创建它,这也是和其他的数据类型不一样的地方:
    
    var
      i: Integer;      //定义一个整形变量i
      s: TStringList; //定义一个TStringList类的对象s
    begin
      i:= 0;
      { 这是对的,因为当定义了一个int类型(简单类型)的变量后,
        编译器会自动为你这个变量分配内存空间 }
      s.LoadFromFile(...);
      { 错误,因为定义这个对象前,还没有为他创建内存空间,
        直接这样执行会引起一个内存错误 }
    end;
     
    
    正确的方法应该是,在使用类的对象前,要显示的调用类的构造方法:
    
    CODE:
      s:= TStringList.Create;
     
    
    或许有朋友会说,为什么不是s.Create呢?那是因为,在执行这条代码前,还没有为s分配内存空间,是不能访问他内部的数据成员的,而前面说了,“类是抽象存在的”,所以在编译器为你的代码打包成可执行文件后,TStringList在内存中已经存在了。当然这种“类名.方法名”的调用方式只能用在类(静态)方法上,而类的构造器的入口则是必须静态存在的。
    
    属性、方法、事件:
        属性是类的特性:例如红色的汽车,红色就是这辆汽车的颜色属性
        方法则是我们传统意义上的函数或过程,也就是类可以做的事:例如汽车可以向前开,也可以向后开
        事件则是在特定条件下,被动调用的代码段,也就是说,事件中我们指定填写的代码可能我们没有手动调用,但是它却可能在一个特定的条件下被对象内部调用而得到执行(当然不排除你显示的手动调用)。
    
        暂时先说到这里,套用一句评书中的话:“预知后事如何,且听下回分解”^_^
    
    分类: Cnpack优秀文档
  • 相关阅读:
    IIS6为应用程序池**提供服务的进程与 World Wide Web Publishing 服务通信时遇到致命错误
    C# WINFORM 强制让窗体获得焦点
    数据库性能优化详解
    sqlserver 2008 修改表结构不能保存
    SQL性能优化
    aspnet打印 设置(页脚 一些数据显示在打印页的最下面)
    图片转成byte数组
    在配置文件中定义初始值然后读取
    DOM编程
    html动态显示时间
  • 原文地址:https://www.cnblogs.com/hcwp/p/3994504.html
Copyright © 2020-2023  润新知