类的概念
类是一种用户自定义的数据类型,可以说它是对某一类事物的抽象描述。
类使用属性和方法来描述某一事务的具体特性和行为。
简单举个例子:将轮船作为类进行描述,轮船不单单指一个物体,而是一类的总称。所以可以不考虑大小,颜色……而是将它抽象为一个类,对应的大小,颜色就可以在类中以属性的形式体现,而轮船在水中运动就是它的方法,所以一个类就是由属性和方法组成的。
记录
现在我们在学习类之前先看看结构,也叫做记录。
Delphi中的记录和类一样都是一种自定义类型,结构直接使用,内存是自动管理的;
类只是一个模板,需要我们根据模型(类)来创建(Create函数)出对象才能够使用,这个过程就叫做类的实例化操作,用完之后需要手动释放。
类中是可以有方法的,而结构里面只能有变量。
下面演示之前我是在form上先画了一个button按钮,对按钮进行操作。
unit Unit_Class01; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} type TMyRecord = record {定义结构} d: TDate; end; TMyClass = class {定义类;没有实际意义只是演示} d: TDate; end; procedure TForm1.Button1Click(Sender: TObject); var MyRec: TMyRecord; {声明一个结构变量} MyCls: TMyClass; {声明一个类变量,也就是对象} begin {使用结构} MyRec.d := Now; ShowMessage(DateToStr(MyRec.d)); ShowMessage(IntToStr(SizeOf(MyRec))); {8;结构的大小是 8 } {使用类} MyCls := TMyClass.Create; {需要先手动建立,因为类需要实例化为对象才可以使用} MyCls.d := Now; ShowMessage(DateToStr(MyCls.d)); ShowMessage(IntToStr(SizeOf(MyCls))); {4;因为mycls对象是一个指针} MyCls.Free; {用完后释放} { 结构与对象(类的实例)在内存中以不同的方式存放,对象只是一个指针; 和结构相比,类拥有着更强大的功能! } end; end.
输出结果如下:
结构和类的区别
由上面代码可以看出来在使用的时候,类就是比记录多了一个实例化,但是类是可以镶嵌方法的,而记录不行,就比如我现在要去用面向对象的方法来在做一个通讯录系统,这个时候如果我该怎么定义呢,应该是先定义一个记录体,这是单个人的,再定义一个类,就以班级为例,班级类中放的是记录的数组,这样就可以对整体进行增删改查了,而不是对个人进行CRUD操作。