当前位置: 移动技术网 > IT编程>开发语言>Delphi > Delphi-面向对象

Delphi-面向对象

2019年12月03日  | 移动技术网IT编程  | 我要评论
1、面向过程2、基于对象3、面向对象 抽象:将同类事物向上抽取的过程 派生(继承): 编程中的继承指的是类和类之间的关系,称为派生。 封装:将不必要的暴漏的细节隐藏起来。 多态:一类事物以多种形态存在 1 {* 2 1、创建类 3 类成员 4 属性:成员变量、字段 5 功能:方法、函数、过程、例程 ...

1、面向过程
2、基于对象
3、面向对象

  抽象:将同类事物向上抽取的过程
  派生(继承): 编程中的继承指的是类和类之间的关系,称为派生。
  封装:将不必要的暴漏的细节隐藏起来。
  多态:一类事物以多种形态存在

 1 {*------------------------------------------------------------------------------
 2   1、创建类
 3     类成员
 4       属性:成员变量、字段
 5       功能:方法、函数、过程、例程
 6   2、创建类对象
 7 
 8   3、对象的生命周期(对象从创建与消亡的过程)
 9       3.1、构造方法
10         3.1.1、在内存中申请一个内存空间,从而实现对象的创建
11         3.1.2、 初始化类成员的功能
12       3.2、对象销毁
13         3.2.1、free;
14         3.2.2、destroy;
15         3.2.3、freeandnil;
16         3.2.4、nil (空值null);
17       3.3、self   //表示本类对象
18         3.3.1、解决命名冲突
19 
20   4、delphi 中的单元的概念
21 -------------------------------------------------------------------------------}

 

 1 type
 2   tuser = class(tobject) //类  所有类继承了tobject
 3   fname : string; //字段
 4   procedure setname(name:string); //声明定义
 5   destructor destroy();override;   //销毁  (销毁 关键字 destructor)
 6   constructor aaa(name:string);  //定义构建方法 (创建 关键字 constructor)
 7   end;
 8 //调用
 9 constructor tuser.aaa(name: string);  //构造方法
10 begin
11   //初始化
12   self.fname := name;
13 
14 end;
15 
16 destructor tuser.destroy;   //销毁对象的方法
17 begin
18   //调用父类销毁对象的方法
19   writeln('调用父类销毁对象的方法');
20   inherited;
21 end;
22 
23 procedure tuser.setname(name: string);
24 begin
25   self.fname := name;
26 end;
27 var
28   user:tuser;
29 begin
30   //通过内的构造方法,创建一个类的对象
31   user := tuser.aaa('aa');   // 'aa' 传参
32 //  user := tuser.create;  //向内存中申请一块内存地址空间  (对象生成)
33 //  user.fname := '小强';
34   writeln(user.fname);
35 //  user.free; //销毁对象(释放对象) :(调用tuser.destroy方法)模板方法设计模式
36   freeandnil(user);//销毁对象
37   readln;
38 end.

 

4、单元属性

project.exe

 1 {*------------------------------------------------------------------------------
 2   1、单元
 3     1.1、方便代码维护(单元的优点)
 4     1.2、对代码进行分门别类 (单元的优点)
 5     1.3、引用(utool in 'utool.pas';)
 6   2、属性(类)
 7     2.1、访问可见性(访问权限修饰符)(对字段、域权限限制)
 8       1、private (私有的)
 9       2、public (公有的)
10       3、protected (受保护的)
11         如果某个字段或者方法被该关键字修饰,该字段在其子类中访问
12       4、publicshed
13 -------------------------------------------------------------------------------}
14 
15 uses
16   system.sysutils,
17   utool in 'utool.pas',
18   utool2 in 'utool2.pas'; //窗体初始化时引用
19 
20 var
21  person : tperson;
22 
23 begin
24 //  writeln(uname);
25 //  writeln(uage);  //无法调用
26   person := tperson.create;
27   writeln(person.name);
28   writeln('------------------------');
29   writeln(person.age);
30   person.agechange := 18;
31   writeln(person.agechange);
32 //  person.age := 18;
33 //  writeln(person.age);
34   readln;
35 
36 end.

 utool.pas

 1 interface
 2 
 3 uses
 4   utool2;  //引用其他单元
 5 
 6  //声明区域
 7 var
 8   uname : string;
 9 type
10   tperson = class
11   private
12     fname:string;   //字段、域(一般情况下,不允许外界直接调用)
13     fage : integer;
14     function getage() : integer; //声明一个函数(用于获取字段的值)
15     procedure setage(fage : integer); //修改,只能定义过程(用于修改字段的值)
16 
17   public  //属性内容
18     property name : string read fname write fname;    //property关键字
19     property age : integer read getage; //该属性为只读属性
20     property agechange : integer read getage write setage; //该属性为可写属性
21 
22 
23   end;
24 
25 implementation
26 //实现区域
27 //var //在实现区域内部声明的只能在本单元内使用
28 //  uage : integer;  //只能在本单元使用
29 
30 { tperson }
31 
32 function tperson.getage: integer;
33 begin
34   result := self.fage;
35 end;
36 
37 procedure tperson.setage(fage: integer);
38 begin
39   self.fage := fage;
40 end;
41 
42 initialization
43 //初始化区域
44 uname := '小强';
45 
46 //uage :=  18;
47 finalization
48 //销毁区域
49 //uname := '';
50 //uage := 0;
51 end.

 

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网