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.