Delphi自定义类

 类的声明
  
  有两种声明办法
  
  一、自定义类的父类delphi内建类
  
  type 类名 = class(父类)
  
   成员表达式
  
  end;
  
  (1)保留字Class说明该类是dephi内建类,将继承父类的属性和方法
  
  (2)“父类”默认是delphi的祖先类Tobject
  
  二、完全自定义的类
  
  Type 类名 = object(父类)
  
   成员表达式
  
  End;
  
  (1) 保留字object说明该类是完全自定义的类
  
  (2) 自类也必须是完全自义的类
  
  注意:用class自定义的类必须遵循delphi内建类的Tobject的特定的构造方法和析构方法,而用object自定义类的方法无此限制(内存管理方式),所以用第一种方法生成对象时必须调用Create构造函数,
  
  第二种就不需要,可直接生成对象,它将做为一般变量,和记录(Record)变量相同,用到
  
  时立即分配内存,用完时自动释放内存
  
  
  
  自定义Delphi内建类的构造和析构
  
  构造函数
  
  Constructor Create(AOwner :Tcomponent) ;override ;
  
  (1)可以根据实际情况改变参数信息(参数个类,类型,顺序,默认值)
  
  (2)若要继承父类的构造函数,可添加inherited create;
  
  析构函数
  
  Destructor destroy ; override ;
  
  (1) 若在自定类中添加了其它类,一定要记得释放这些对象
  
  (2) 若要继承父类
  
  (3)值得注意的中destroy中删除对象的变量,即对象的参考,未真正删除对象实体,也就没有释放对象所占的内存,另外,若在没有调用create 的情况下,该对象参考的值为nil,这种情况下调用destroy,会产生错误
  
  用Free可解决上面的问题(真正释放内存;在没有创建的对象的情况下调用Free也不会报错)
  
  还有一个更实用的FreeAndNIl(对象),它不仅释放内存,而且将对象的参考(变量)赋nil值
  
  完全自定义类的构造和析构
  
  自定类也完全可以自己编码自己的构造和析构函数,为其分配内存、释放内存,不免要用到指针,是复杂度很高的工程,此时还是用的自定义的Class比较方便。
  
  类的封装
  
  封装的含义:把个别单元(对象和类)的所有数据和功能(成员变量、成员函数、属性)全部包括它的内部。
  
  封装的目的:防止外界去破坏对象内部结构和数据。只有通过对象对外的接口,才能访问对象内部的数据,对象之间也无法直接访问彼此的数据,必须通过某些信息的传递,而这些信息对调用、执行对象内部的方法,或访问对象内部的属性或字段。
  
  封装的方式:delphi中用类(Class)的声明技术。接口部分(interface)用来定义对象外观及对象对外表现的行为,而实现部分(implementation)则用来处理对象内部运行,其内容包括不公开的字段、方法,甚至属性。
  
  ObjectPascal封装的级别
  
  五个级别
  
  Private
  
  (1)这里声明的类成员(包括字段、方法(类方法))只能在类声明的单元内使用。
  
  (2)子类可以继续父类的private成员,但无法使用这些成员
  
  该部分声明的方法为类方法,也就是说对象无法直接调用
  
  Protected
  
  (1)这里声明的类成员(包括字段、方法(类方法))只能在类声明的单元内使用
  
  (2)子类可以继承父类的protected成员,也可以使用,但也只限于类定义的单元
  
  该部分声明的方法同样为类方法,类的对象也无法直接调用
  
  Public
  
  (1)这里声明的类成员(包括字段、方法(对象方法))可见度最大,可以在类单元及类对象所在的任何单元使用。
  
  Published
  
  (1) 可见度与public一样,
  
  (2) 与public的区别是本区域的成员可以在delphi对象检查器中出现,而此差别来自RTTI机制
  
  RTTI(Run time type Information)是为Published制作它允许应用程序动态查询该类的published的字段、属性(包括属性和事件),并且加载类的方法
  
  RTTI启动条件是有条件的——使“{$M+}”编译指令的状态下才能启动RTTI或它的祖先类以上述状态编译,也可以启动RTTI,然后该类检查器才能显示在检查器中。
  
  (3) 除了RTTI条件限制后,published的属性也有类型限制
  
  A.序数、字符串(string)、class、interface以及mothod—pointer类,都可以做published的属性
  
  B. 范围在0-31之间的集合,该集合值必须满足byte、word或double word类才能做published属性
  
  C. 除了Real类外的所有实数类,都可以做为published属性
  
  D.数组类不可以做published属性
  
  E. 所有的成员函数都可以作为published的事件,然而重载override的函数不可以作为published事件
  
  F. 字段Fieled不能作为Published的属性,除非它属于class或interface类
  
  Automated
  
  (1) 可见度与Public成员一样
  
  (2) 与public差别和public与published差别相似,当我们使用自动化服务器(Automation server)时,“Automation Type information”是为auomated成员设置。而所有的Automatic成员只能出现在OleAuto单元,继承自TAutoObject的类里面,且OleAuto单元原本就有默认的Automated区,至于comObj单元,则无法具有Automated
  
  开头不加保留字的类成员
  
  这里讲的开头不加保留的类成员两种情况
  
  一、 在private 、protected 、public 、published所属区域,非第一个类成员可以不加这些保留字(省略)
  
  二、 若类的成员不些这个上述四个范围之内,像在类的开头部分有几个没有保留字的类成员,它的所属情况分两种:
  
  A. 该类或你类使用了“{$M+}”编译指令的情况下,默认为published成员
  
  B. 该类或你类未使用“{$M+}”编译指令的情况下,默认为public成员
  
  成员封闭等级的变更法则
  
  变更方法:只需要在子类成员的声明区重新声明即可
  
  遵循法则:可扩大该成员的可见度,但不要缩小成员的可见度。
  
  因为缩小某些成员可见度使某些成员可见度降低,有可能困这些成员无法访问而导致编译错误
  
  类成员的定义和实现
  
  类成员
  
  字段、方法、属性
  
  字段与对象引用的实现
  
  字段:指狭义上的字段——指对象还拥有的成员变量。
  
  (1) 成员变量的封装通常在private这个等级
  
  (2) 成员变量的定义必须早于任何属性或方法的定义
  
  (3) 成员变量的类型没有限制
  
  倘若成员变量属于class类,则此种情况我们称该成员变量为“对象引用”
  
  方法
  
  (1) 类名.方法名
  
  属性
  
  与字段的区别;
  
  (1) 字段只是一个保留数据的空间,属性可以被访问,进行一些读写操作
  
  (2) 属性需要加上保留字property,且要提供一些相关的读写方法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Delphi是一种集成开发环境(IDE),被用于创建Windows平台上的应用程序。在Delphi中,我们可以使用自定义来创建自己的数据型和对象。 自定义是用于封装数据和功能的模块化单元。通过自定义,我们可以将相关的数据和方法组织在一起,以便更好地管理和操作。一个自定义可以包含属性(对应数据)、方法(对应功能)和事件(对应触发器)。 在Delphi中,我们可以使用向导来创建自定义向导提供了一个可视化界面,可以设置的属性和方法。首先,我们可以定义的名称、父(如果有)、接口(可选)等。然后,我们可以添加属性或方法,并为它们设置数据型、访问修饰符和实现代码。最后,我们可以根据需要为添加事件。 通过自定义,我们可以创建多个对象,每个对象都具有相同的属性和方法,但它们的数据可以独立进行操作。我们可以在代码中通过实例化来创建对象,并访问对象的属性和方法。 自定义Delphi中具有许多优点。首先,它提高了代码的可维护性和可读性,因为相关的数据和功能被组织在一起。其次,它提供了代码的重用性,因为我们可以在不同的应用程序中使用相同的。另外,自定义还支持面向对象编程的特性,如继承、封装和多态,使得我们可以更加灵活地设计和实现程序。 总之,Delphi自定义是一种强大的工具,可以帮助我们创建模块化、可维护和灵活的应用程序。通过向导,我们可以轻松地创建自定义,并利用它们来封装数据和功能,提高代码的可读性和重用性。 ### 回答2: Delphi是一种面向对象的编程语言,可以使用它来创建自定义自定义是指根据程序需求,开发者可以创建自己定义的数据型。 在Delphi中,我们可以使用class关键字来定义一个。一个由一组属性和方法组成。属性是的数据成员,用于存储和表示对象的状态。方法是用于对对象进行操作和执行特定功能的函数。 在定义时,需要考虑的属性和方法。可以根据需要添加需要的属性,每个属性都有其型和访问权限。属性的型可以是基本数据型,如整数、浮点数、字符等,也可以是其他自定义的方法定义了的行为和功能,可以包括对属性的读取和设置、对象的初始化和析构等操作。方法可以是公共方法,可以在的外部访问和调用;也可以是私有方法,只能在的内部访问和调用。 自定义的一个好处是可以根据需要封装和组织数据和功能,提高代码的可读性和可维护性。通过自定义,可以建立具有相关属性和方法的对象实例,简化程序的设计和开发过程。 在Delphi中,可以使用自定义来实现各种功能,如创建游戏角色、管理学生信息、处理文件操作等。通过定义各种属性和方法,可以使适应不同的应用场景,并实现灵活的功能。 总的来说,Delphi自定义功能十分强大,可以根据需求创建各种数据型并封装相关的操作,提高程序的可扩展性和可维护性。通过自定义,可以实现更加灵活和高效的编程。 ### 回答3: Delphi 是一种高级的编程语言,它允许开发人员创建自定义来实现特定功能和逻辑。自定义是面向对象编程的基本概念之一,它允许开发人员将相关的数据和方法组织在一起,以便更好地管理和重用代码。 在 Delphi 中创建自定义的过程非常简单,只需要按照一定的语法规则来定义的成员即可。自定义可以包含属性、方法和事件等成员。 属性是的特征或状态,可以通过访问器(Getter)和修改器(Setter)来读取和修改属性的值。方法是的行为,用于执行特定的操作或完成特定的任务。事件是的响应机制,可以在特定的情况下触发特定的操作。 使用自定义可以让开发人员更好地组织和管理代码,并且提高代码的重用性。当我们需要实现某项特定功能时,只需要创建一个适应需求的自定义,并调用的成员来实现相关的功能。 例如,我们可以创建一个自定义来表示一个学生,该可以包含学生的姓名、年龄和成绩等属性,还可以包含计算学生平均成绩的方法。当我们需要计算一个学生的平均成绩时,只需要创建一个学生对象,并调用平均成绩的计算方法即可。 总之,Delphi 提供了强大的功能来创建自定义,使开发人员能够更好地组织和管理代码,并提高代码的可读性和可维护性。通过合理地使用自定义,我们可以更加高效地开发出符合需求的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值