类的概念
类是一种用户自定义的数据类型,可以说它是对某一类事物的抽象描述。
类使用属性和方法来描述某一事务的具体特性和行为。
简单举个例子:将轮船作为类进行描述,轮船不单单指一个物体,而是一类的总称。所以可以不考虑大小,颜色……而是将它抽象为一个类,对应的大小,颜色就可以在类中以属性的形式体现,而轮船在水中运动就是它的方法,所以一个类就是由属性和方法组成的。
记录
现在我们在学习类之前先看看结构,也叫做记录。
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操作。