类是什么?
类(class)是字段和方法(函数和过程)的集合,并把这些字段和方法集中在一起完成一项特定的编程任务,在这种情况下,类也称为封装任务。
类具有以下性能:
控制存取的能力、构造程序(constructor)、析构程序(destructor)、字段(field)、方法(函数和过程)、隐含的特殊指针Self
在进一步讲解这些性能之前,我们先看看一个例子怎么使用一个类,以典型的Windows控件-复选框(CheckBox)为例。
1、表示复选框(CheckBox)的类具有反映复选框标题和状态(选中或不选中)的字段;
2、这个类也应该具有一些方法,这些方法可以用来设置和查询复选标题,而且能够设置和查询其状态,这些方法的名称可能为GetCheck、SetCheck、GetCaption、SetCaption;
3、当类编写好之后,就可以建立一个类的实例来控制复选框。(暂且不要管如何建立的类,假设我们已经建立好了CheckBox类);
4、加入我们的程序中需要三个复选框(CheckBox),那就应该有三个CheckBox类实例;
5、代码如下(代码无法测试,只是作为一个例子演示说明类的)
var Check1: TMyCheckBox; { 声明三个TMyCheckBox类实例变量} Check2: TMyCheckBox; Check3: TMyCheckBox; begin Check1 := TMyCheckBox.Create(ID_CHECK1); { 创建三个TMyCheckBox类实例} Check2 := TMyCheckBox.Create(ID_CHECK2); Check3 := TMyCheckBox.Create(ID_CHECK3); Check1.SetCaption('Option One'); { 第一个复选框标题为“Option One”,且选中} Check1.SetCheck(True); Check1.SetCaption('Option Two'); { 第二个复选框标题为“Option Two”,且不选中} Check1.SetCheck(False); Check1.SetCaption('Option Three'); { 第三个复选框标题为“Option Three”,且选中} Check1.SetCheck(True); if Check1.GetCheck then Do OptionOneTask; { 通过GetCheck返回是否选中,如果选中执行OptionOneTask过程} if Check2.GetCheck then Do OptionTwoTask; {etc. 等等} end;
6、在这个例子中,每个类的实例都是独立的对象。每个实例都有自己的字段,并且对象之间是相互独立的。它们都是相同类型的对象,但在内存中又是独立的实例。
上面的例子只是让大家消除一些模糊的概念,进一步理解类。