DIOCP中有大量的类,为了更好的学习DIOCP,今天来学习下类的知识:

 类的概念就是,抓住对象的相似性,定义它们具有的共同特征的数据和操作。Delphi类的声明就是类型的声明,语法是:
    type 类名 = class(类名)
      {数据成员声明}
      {过程和函数声明}
      {属性的声明}
    end;

    注意:Delphi中的惯例是类型名称以T开头,如TObject。Delphi的IDE中也总是以T开头对类进行命名

类的声明

在Delphi中,类被当作一个类型来定义。其语法格式:
type 类名=class(基类)
{字段声明}
{方法声明}
{属性声明}
end;

1、Delphi面向对象程序设计,要求对象都由某个基本对象继续而来,即由Class指定父对象。Delphi约定最基本的类是TObject,编程中我们所有的对象声明都是由TObject或由TObject派生的对象继承而来。如:

  Type TPerson = class(TObject) // 从基类TObject继续声明人员类
  public
Name:string; // 姓名
function GetAge:Integer; // 获取年龄 
private
Age:integer; // 年龄
end;

  注意:关键词class后的(TObject)可以省略。如:Type TPerson = class与Type TPerson = class(TObject)等效。

Type TEmployee = class(TPerson)  // 从人员类继续,声明职员类
public
Salary:integer; // 薪金
DaptName:string; // 部门名称
procedure Infor; // 显示职员信息
procedure SetSalary(A:Integer); // 设置薪水
end;

2、由TObject继承派生的对象,默认构造函数、析构函数。上述对象TPerson、TEmployee的构造函数、析构函数分别为Creat()和Destroy()。如果要在对象中定义构造函数,要使用关键词constructor如果要在对象中定义析构函数,要使用关键词destructor和override如:

Type TCustomer = class(TPerson) // 从人员类继续,声明顾客类
public
AddressName:string; //  
procedure Infor; // 显示职员信息
constructor Creat(Str:string); // 设置薪水
destructor Destroy:override; // 设置薪水

property Name: string read FName write FName; //属性

end;

  3、对象数声明的属性读和写,以及方法(内部的函数、过程),必须在Unit的实现部分(implementation)详细表述。

function TPerson.GetAge:integer;
begin
Result:=Age;
end;

procedure TEmployee.Infor;
begin
Writeln('姓名',Name,'年龄',GetAge,'部门',DaptName,'薪水',Salary)
end;

constructor TCustomer.Creat(Str:string);
begin
inherited;               
Writeln('顾客类的构造函数');
AddressName:=Str;
end;

destructor TCustomer.Destroy;
begin
Writeln('姓名:',Name,'的顾客对象被删除');
inherited Destroy;
end;

4、Delphi的每个类的根类都是TObject,如果不指明一个明确的基类,Delphi将自动使用TObject作为基类。例如:
TMyObject=class // 默认基类为TObject
provate
....
public
...
end;