PHP面向对象编程课件_第1页
PHP面向对象编程课件_第2页
PHP面向对象编程课件_第3页
PHP面向对象编程课件_第4页
PHP面向对象编程课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020年2月28日星期五 IT Education $p2=new Person(); 2020年2月28日星期五 IT Education $p1-age; $p1-sex; ?$p1-say(); $p2-run(); 2020年2月28日星期五 IT Education 定义构造方法时可以给参数设置默认值,如此,可以调用无参的构造方 法创建对象。 2020年2月28日星期五 IT Education ? 2020年2月28日星期五 IT Education echo $a 这时运行将报错 ? 如果在类中定义_toString()方法,输出对象引用时将自 动调用该方法,并输出该方法的返回

2、值,且 _toString() 方法要有return语句 2020年2月28日星期五 IT Education $t2=$t1,则对其中任何一个做属 性的修改,都将影响另一个,而克隆的两个对象互不打 扰 ? PHP5中定义了一个特殊的方法_clone(),在对象克隆时 自动调用,如果想克隆后改变原对象的内容,则需在该 方法中重写原本的属性和方法。 2020年2月28日星期五 IT Education 2020年2月28日星期五 IT Education ? 如果类中有抽象方法,那么该类就要被 abstract修饰,该 类称为抽象类 ? 抽象类必须有抽象方法,但也可以有成员属性和非抽象 的方法

3、2020年2月28日星期五 IT Education if($c instanceof Child) echo “yes; 输出yes 2020年2月28日星期五 IT Education & Training 2020/2/28 多态 ? 多态性是指一段程序能够处理多种类型对象的能力 ? PHP中虽然可以实现多态,但和c+还有Java这些面向对 象的语言相比,多态性并不是那么突出,因为 PHP本身就 是一种弱类型的语言,不存在父类对象转化为子类对象 或者是子类对象转化为父类对象的问题 ? 重载和重写:PHP的同一个类中不能出现同名方法,所以 所谓的重载其实和Java中的重写类似,指的是在子类

4、中 可以重新定义父类中的方法。 ? 2020年2月28日星期五 IT Education & Training 2020/2/28 对象串行化 ? 两种情况我们必须把对象串行化,第一种情况就是把一 个对象在网络中传输的时候要将对象串行化,第二种情 况就是把对象写入文件或是数据库的时候用到串行化。 ? 串行化有两个过程,一个是串行化,就是把对象转化为 二进制的字符串,我们使用serialize()函数来串行化一个 对象,另一个是反串行化,就是把对象转化的字符串再 转化为对象, 我们使用unserialize()函数来反串行化一个 对象. 2020年2月28日星期五 IT Education &

5、Training 2020/2/28 serialize()函数 ? PHP中serialize()函数的参数为对象名,返回值为一个字符 串,Serialize()返回的字符串含义模糊,一般我们不会解 析这个串来得到对象的信息,我们只要把返回来的这个 字符串传到网络另一端或是保存到方件中即可。 2020年2月28日星期五 IT Education & Training 2020/2/28 unserialize()函数 ? PHP中unserialize()函数来反串行化对象,这个函数的参数 即为serialize()函数的返回值,输出当然是重新组织好的 对象. 2020年2月28日星期五 I

6、T Education & Training 2020/2/28 _sleep()函数和_wakeup()函数 ? 在对象串行化的时候,会调用一个_sleep()函数来完成 一些睡前的事情;而在重新醒来,即由二进制串重新组 成一个对象的时候,则会自动调用PHP的另一个函数 _wakeup(),做一些对象醒来就要做的动作。 ? _sleep()函数不接受任何参数, 但返回一个数组,其中 包含需要串行化的属性。末被包含的属性将在串行化时 被忽略,如果没有_sleep()方法,PHP将保存所有属性。 2020年2月28日星期五 IT Education & Training 2020/2/28 课堂

7、练习 ? 编写一个图书信息类Book。 ? 属性受保护的,包括书名bookName,作者author,价格 price ? 提供有参构造方法,析构方法,访问器方法(如果价格 赋值不是数字,则将价格赋值为0),输出图书信息的方 法displayBook。 ? 创建对象测试该类 2020年2月28日星期五 IT Education & Training 2020/2/28 课堂练习 ? 编写一个小说信息类Novel继承Book类。 ? 添加私有属性小说描述desc。 ? 添加有参构造方法,允许使用者通过构造方法为所有属 性赋值。 ? 重载displayBook方法,将小说所有信息以表格形式打印 出

8、来。 ? 提供克隆方法,当克隆一个新的小说对象时,要求将 desc的值设为“待添加”。 ? 编写displayDesc方法,用绿色背景的div显示小说的描述 信息。 2020年2月28日星期五 IT Education & Training 2020/2/28 课堂练习 ? 实现:当打印小说对象时,会输出当前的小说名称(红 色字体,带书名号)。 ? 实现:当用户调用display(1)的时候,运行displayBook方 法,调用display(2)的时候,运行displayDesc方法。 ? 实现:小说对象可以序列化,除了desc外的其他属性都 进行序列化。小说对象被反序列化时, price的值设置为0。 2020年2月28日星期五 IT Education & Training 2020/2/28 课堂练习 ? 编写类DisplayTable,用来以表格形式显示指定数据库中 的任意数据表的信息。 ? 属性: 数据库的主机名 用户名 密码 数据库名 表名 结果集 2020年2月28日星期五 IT Education & Training 20

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论