3.DELPHI中的面向对象
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DELPHI中的面向对象
例:我们已定义好xuesheng类 procedure TForm1.Button1Click(Sender: TObject); var xs:xuesheng; Begin xs:=xuesheng.Create; xs.Destroy; end; //创建对象 //释放对象
type yuanxing=class private banjing:integer; yanse:string; public constructor create(); //声明构造函数 procedure setbanjing(i:integer); procedure setyanse(st:string); function getbanjing():integer; function getyanse():string; destructor Destroy; //声明析构函数 end;
DELPHI中的面向对象
类成员的访问权限
类定义的完整格式: type 类名 = class private 私有数据成员、成员函数或过程 protected 保护数据成员、成员函数或过程 public 公共数据成员、成员函数或过程 end;
DELPHI中的面向对象
将类放入同一文件
例:
type yuanxing=class private banjing:integer; yanse:string; public procedure setbanjing(i:integer); procedure setyanse(st:string); function getbanjing():integer; function getyanse():string; end; procedure yuanxing.setbanjing(i:integer); begin banjing:=i; end; procedure yuanxing.setyanse(st:string); begin yanse:=st; end; function yuanxing.getbanjing():integer; begin getbanjing:=banjing; end; function yuanxing.getyanse():string; begin getyanse:=yanse; end;
DELPHI中的面向对象
类与对象
对象的使用 2、访问对象成员 格式:
对象名 . 成员
注:访问对象之前,必须先创建对象。
DELPHI中的面向对象
例:我们已定义好xuesheng类
procedure TForm1.Button1Click(Sender: TObject); var xs:xuesheng; begin xs:=xuesheng.Create; xs.cj1:=90.5; //访问数据成员 xs.cj2:=85; xs.show(); //访问成员函数或过程 xs.Destroy; end;
将类放入一 个单元文件 中。
DELPHI中的面向对象
例:我们已在本单元定义好yuanxing类
procedure TForm1.Button1Click(Sender: TObject); var yuan:yuanxing; begin yuan:=yuanxing.Create; yuan.setbanjing(10); yuan.setyanse('红色'); showmessage(yuan.yanse); //正确,该类声明在本单元中 yuan.Destroy; end;
DELPHI中的面向对象
类与对象
类的定义格式: type 类名=class 数据成员 成员函数或过程 end;
注:成员函数或过程不允许在数据成员之上定义。
DELPHI中的面向对象
类与对象
例: type xuesheng=class xm:string; xh:string; cj:real; end;
DELPHI中的面向对象
继承
DELPHI中的面向对象
继承
继承:在已经存在的类的基础上构造新的类,同时增加或重新定义数 据和方法。 派生类:由类的基础上构造的新的类称为派生类。
派生类的定义格式: type 派生类 = class ( 基类 ) 相关数据 end;
DELPHI中的面向对象
继承
基类: Type jl = class public {public数据} private {private数据} protected {protected数据} end; 派生类: Type psl = class ( jl )
//该类中只含有数据成员。
比较记录类型 type xuesheng=record xm:string; xh:string; cj:real; end;
DELPHI中的面向对象
类与对象
implementation type //该类中只含有数据成员。 xuesheng=class //定义xuesheng类 xm:string; xh:string; cj1:real; cj2:real; procedure show(); //声明成员过程 function aver():real; //声明成员函数 end; {$R *.dfm} procedure xuesheng.show(); begin showmessage(xm); end; function xuesheng.aver():real; begin aver:=(cj1+cj2)/2; end;
DELPHI中的面向对象
类成员的访问权限
类成员中,有三中访问权限,其标识符分别是 Private 私有 只有该类的内部成员,和本单元文件能够访问 Protected 保护 只有该类的内部成员和它的派生类能够访问 (以后将学习到)
Public
共有 类外部或内部都能访问
注:在默认情况下,类中没有加任何标识符的成员,为共有成员。
Unit1代码文件
DELPHI语言基础
将类放入单独单元文件
unit Unit2; //放入单独单元文件 interface type yuanxing=class private banjing:integer; yanse:string; public procedure setbanjing(i:integer); procedure setyanse(st:string); function getbanjing():integer; function getyanse():string; end; implementation procedure yuanxing.setbanjing(i:integer); begin banjing:=i; end; procedure yuanxing.setyanse(st:string); begin yanse:=st; end; function yuanxing.getbanjing():integer; begin getbanjing:=banjing; end; function yuanxing.getyanse():string; begin getyanse:=yanse; end; end.
//继承lj类
end;
由派生类创建的对象,能够 访问基类里面的 public?private?protected?
DELPHI中的面向对象
DELPHI中的面向对象
DELPHI中的面向对象
DELPHI中的面向对象
类与对象
类:具有相同属性和行为的一组对象的共同描述,是对相似对象建 立的模板。 对象:由类定义的对象,具体的是一个实体。
注:DELPHI中的类,类似于记录,类和记录不同在于,类有行为 等区别。
DELPHI中的面向对象
类的声明 对象的使用
….
DELPHI中的面向对象
构造函数 析构函数
DELPHI中的面向对象
构造函数析构函数
构造函数析构函数 由类说明了一个对象以后,系统并没有实际创建该类的对象,只是 定义了一个该对象的指针。为此我们需要构造该类的对象。 构造函数:create构造函数,是由类自动生成一个默认的create函数, 也可以通过手写create构造函数重载它。构造函授是一个特殊函数,用 constructor标识。执行create构造函数之后,对象才再内存中分配空 间,创建对象。
function yuanxing.getbanjing():integer; begin getbanjing:=banjing; end; function yuanxing.getyanse():string; begin getyanse:=yanse; end; procedure TForm1.Button1Click(Sender: TObject); var yuan:yuanxing; begin yuan:=yuanxing.Create; yuan.setbanjing(10); yuan.setyanse('红色'); showmessage(yuan.yanse); yuan.Destroy; end; end.
implementation type yuanxing=class private banjing:integer; yanse:string; public procedure setbanjing(i:integer); procedure setyanse(st:string); function getbanjing():integer; function getyanse():string; end; {$R *.dfm} procedure yuanxing.setbanjing(i:integer); begin banjing:=i; end; procedure yuanxing.setyanse(st:string); begin yanse:=st; end;
析构函数:destroy析构函数,类自动默认一个destroy函数,也可以 通过手写destroy构造函数重载它。和构造函数相反,当对象不再使用 时,用于释放资源。标识符也是destructor。
DELPHI中的面向对象
构造函数析构函数
构造函数析构函数 编写程序时,当对象不再使用,必须将其释放。
DELPHI中的面向对象
//定义类成员过程
//定义类成员函数
DELPHI中的面向对象
类与对象
对象的使用 1、对象的声明 对象的声明方式与变量相同 var 对象名:类名; 对象声明以后,并不能直接使用,必须先创建对象。 创建对象: 格式 对象名 . Create; 对象使用结束后,释放对象 释放对象格式:
对象名. Destroy 对象名.free
DELPHI中的面向对象
constructor yuanxing.create; begin showmessage('构造函数!'); end; //构造函数
destructor yuanxing.destroy; begin showmessage('析构函数!')m1.Button1Click(Sender: TObject); var y:yuanxing; begin y:=yuanxing.create; //创建对象 y.Destroy; //释放对象 end;
unit Unit1; interface var Form1: TForm1; implementation uses unit2; //引用类文件 {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var yuan:yuanxing; begin yuan:=yuanxing.Create; yuan.setbanjing(10); yuan.setyanse('红色'); showmessage(yuan.yanse); //错误 yuan.Destroy; end; end.