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