




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP面向对象的编程设计 n类与对象的基本概念 n如何抽象一个类 n通过类实例化对象 n静态变量(类变量)和静态方法(类方法): n封装性 n继承性 n常见的关键字和魔术方法 n抽象类于接口 n多态性的应用 类与对象的基本概念 什么是类: 在面向对象的编程语言中,类是一个独立的程序单位,具有相同属性和服务 的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内 部包括成员属性和服务的方法两个主要部分。 什么是对象: 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位 。 类和对象的关系 把猫的特性 提取出来 猫类 对象(实例) 对象(实例) 对象(实例) 类与对象的基本概念 入门案例:创建一个猫类。 创建一只猫(通过一个cat类创 建一个cat对象) $cat1=new cat(); $cat1-name=“小白”; $cat1-age=3; $cat1-color=“白色”; $cat2=new cat(); 类与对象的基本概念 注意:从猫类到对象目前有几种说法: 1、创建一个对象 2、实例化一个对象 3、把类实例化 通过上面的案例和讲解我们可以看出: (1)类是抽象的,概念的,代表一类实物,比如人类 (2)对象是具体的,实际的,代表一个具体实物 (3)类是对象的模板,对象是类的一个个实例。 类与对象的基本概念 成员属性的说明: 1、成员属性是从某个实物提取出的,它可以是基本数据类型(整数、小数、 字符、布尔),也可以是复合数据类型(数组、对象) Class 类名 成员属性(变量); Public $name; Public $age; 这里的public是一个关键字,目前先认为$name属性是公开的,可以任意访问 。 类的声明和成员属性 类的属性如果赋初值,只能是一个直接的值,不能是函数的返回值,或是表 达式返回值。 如何创建对象: $对象名=new 类名(); $对象名=new 类名; 如何访问(使用)对象的属性 $对象名-属性名; $cat1-name=“小明” /给某个对象赋值。 如何抽象一个类创建对象 2、怎样访问一个成员属性(前提是成员属性是public) 基本语法:$对象名-属性名; 如果一个文件,专门用于定义类的,则命名规范应当是 类名.class.php 一个小思考题: $a=new person; $a-name=“小明”; $b=$a; echo $a-name.”; echo $b-name.”; 结论:PHP中的对象是按引用传递的,即每个包含对象的变量都持有对象的 引用,而不是整个对象的拷贝。 如何抽象一个类对象中成员的访问 思考:$b-age=890 则echo $a-age;echo $b-age; 对象在内存中的分配 地 址 空 间 对象在内存中的分配 函数和成员方法关系: 当我们把一个函数写到某个类中,则该函数可以称为成员方法。 我们有这样一个需求:希望人可以说话,做算术题等等。 如: (1)添加speak成员方法,输出我是一个好人 (2)添加jisuan成员方法,该方法可以接收一个数N,计算1+n的结果。 (3) 访问修饰符是 function 函数名(参数列表) /函数体 /return 语句; 如何抽象一个类成员方法 成员方法细节: (1)方法的参数列表可以是多个,举例判断多个数(数组)最大的数。 (2)方法可以没有返回值 name=“孙悟空”; $p1-age=500; 构造方法和析构方法是对象中的两个特殊方法,构造方法是对象创建完成后 第一个被对象自动调用的方法,通常使用构造方法完成一些对象的初始化, 构造方法和析构方法 在创建一个人对象时候,就初始化name和aga, 需要构造方法。快速入门: Class person Public $name; Public $age Public funtion _construct($iname,$iage) $this-name=$iname, $this-age=$iage echo “我是构造方法”; $p1=new persion(“李晓光”,67); echo “hello”.$p1-name; 构造方法和析构方法 构造方法特点: 1、没有返回值,它是自动调用。 2、在PHP5中一个类可以同时有两种形式的构造方法_construct()和类名 (),当两个同时存在的时候,优先调用_construct(),请大家以后使用 _construct()。 什么是this 系统会给每个对象分配this代表当前对象,$this-属性名。 (1)$this可以理解成就是对象本身在堆区的地址, (2)哪个对象使用到$this,就是哪个对象的地址。 (3)this不能在类的外部使用,只能在类定义的方法中使用。 构造方法和析构方法 构造方法注意事项: (1)一旦自定义了一个构造函数,默认的构造函数就被覆盖了,这时在创建 对象的时候就要使用自定义的构造函数。 (2)一个类只能有一个构造函数(不能重载) (3)注意作用是完成对新对象 的初始化,并不是创建对象本身 (4)在创建对象后,系统自动调用该类的构造方法。 (5)一个类有且只有一个构造方法,在PHP5后虽然_construct()和类名( ) 可以共存,但是实际上页只能使用一个。 (6)如果没有给类自定义构造方法,则该类使用系统默认的构造方法 (7)构造方法的默认访问修饰符是public 若$p3=new cat ()会报错。 构造方法和析构方法 析构方法:作用主要用于释放资源(比如释放数据库的链接,图片资源,销毁 某个对象) Class person Public $name; Public $age Public funtion _construct($iname,$iage) $this-name=$iname, $this-age=$iage Function _destruct() Echo $this-name.”销毁资源”; 构造方法和析构方法 $p1=new person(“小龙”,45); $p1=NULL; $p1=new person(“李明”,15); $p1=new person(“小路”,23); 运行代码我们得出: (1)析构方法会自动调用 (2)析构方法主要用于销毁资源 (3)析构方法调用顺序是,先创建的对象后销毁 通过类实例化对象构造方法和析构方法 析构方法什么时候被调用: (1)当程序进程结束退出时 (2)当一个对象称为垃圾对象的时候,该对象析构方法也会被调用 (3)所谓垃圾对象,就是指没有任何变量再引用它。 (4)一旦一个对象成为垃圾对象,析构方法就会立即调用。 小结: (1)php5加入的析构方法function _destruct() (2)析构方法没有返回值。 (3)主要作用是释放资源的操作,并不是销毁对象本身。 (4)再销毁对象前系统自动调用该类的析构方法 (5)一个类最多只有一个析构方法。 注意:在PHP中析构方法并不是很常用,它属于类中可选的一部分,只有需要的时候才再类 中声明。 通过类实例化对象构造方法和析构方法 在php中如何销毁一个对象? (1)显式销毁:例如$obj=null;unset($obj); (2)隐式销毁:php脚本是解释型语言,按顺序一行一行来执行,当页面执 行完毕,页面中所有产生的变量自动销毁。 通过类实例化对象构造方法和析构方法 静态变量(类变量)和静态方法(类方法): 思考:说有一群小孩在玩游戏,不断有新的小孩加入,如何知道现在有多少人 在玩,如何使用面向对象的思想编程解决。 思路(1)使用全局变量,在程序中,都可以使用的变量。 name=$name; 静态变量(类变量)和静态方法(类方法): Public function join_game() Global $global_nums;/声明一下使用全局变量 $global_nums+=1; echo $this-name.”加入游戏”; $child1=new child(“李龙”); $child1-join_game(); echo “有”.$global_nums; 静态变量(类变量)和静态方法(类方法): 思路(2)使用静态变量 name=$name; Public function join_game() Self:$name+=1;/使用静态变量; Echo $this-name.”加入游戏”; 静态变量(类变量)和静态方法(类方法): 创建几个小孩: $Child1=new child(“刘备”); $child1-join_game(); Echo “有多少人在玩游戏:”.child:$nums; 静态变量在内存中存在形式如图: 静态变量(类变量)和静态方法(类方法): 所有的对象都共享的一个变量. 类的静态属性是指,属于类,而不属于具体对象的属性。不管类有没有实例化 ,有0个对象,还是有n个对象,静态变量都存在,且只存在一个。 静态变量的基本用法: (1)在类中定义静态变量 【访问修饰符】static $变量名 (2)如何访问静态变量 如果在类中访问有两种方法: Self:$静态变量名 类名:$静态变量名 如果在类外访问:有一种方法 类名:$静态变量名 静态变量(类变量)和静态方法(类方法): 静态方法: 需求:当我们操作静态变量的时候,我们可以考虑使用静态方法,比如统计所 有的学生交得学费。在我们编程中,我们往往使用静态方法去操作静态变量. 静态方法特点: (1)静态方法去操作静态变量 (2)静态方法不能操作非静态变量 注意:普通的成员方法,即可以操作非静态变量,也可以操作静态变量。 静态变量(类变量)和静态方法(类方法): name=$name; public static function enterschool($ifei) Self:$xuefei+=$ifei; Public static function getxuefei() Return self:$xuefei; 静态变量(类变量)和静态方法(类方法): $stu1=new student(“小海”); $stu1-enterschool(450);或 student:enterschool(45); echo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 滴滴车个人租车协议合同
- 管道安装施工补偿协议书
- 流动维修设备出售协议书
- 维修行业合作合同协议书
- 2025教育读书心得
- 田地承包合同协议书范本
- 电气柜安装劳务合同范本
- 电气安装施工工合同范本
- 领养宠物丢失协议书模板
- 电商发展资金支持协议书
- 运输合同协议书电子版
- 区块链技术在智慧城市建设的挑战与解决方案
- DB13-T 1544-2025 预拌混凝土生产管理规程
- 水务网络安全培训课件
- 客服员礼仪培训
- 港口夏季四防安全培训
- 《探索虚拟现实与增强现实技术的融合发展:课件综述》
- 门诊电子病历书写规范
- 棘阿米巴角膜炎诊断与治疗专家共识(2025) 解读
- 产业园区污水管网升级改造初步设计方案
- 重点人口管理工作规定
评论
0/150
提交评论