Delphi-面向对象
程序员文章站
2022-03-10 12:46:36
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.