《PHP面向对象编程》课件

上传人:29 文档编号:240652934 上传时间:2024-04-27 格式:PPT 页数:43 大小:202KB
收藏 版权申诉 举报 下载
《PHP面向对象编程》课件_第1页
第1页 / 共43页
《PHP面向对象编程》课件_第2页
第2页 / 共43页
《PHP面向对象编程》课件_第3页
第3页 / 共43页
资源描述:

《《PHP面向对象编程》课件》由会员分享,可在线阅读,更多相关《《PHP面向对象编程》课件(43页珍藏版)》请在装配图网上搜索。

1、27 四月 2024IT Education&TrainingPHPPHP面向对象编程面向对象编程PHP面向对象编程 2024/4/2727 四月 2024IT Education&Training主要内容面向对象编程的基础知识PHP5中面向对象编程的基本技术 PHP5中面向对象编程的高级技术 2024/4/2727 四月 2024IT Education&Training面向对象编程的基础知识什么叫面向对象(OOP Object Oriented Programming)起初,“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法。但这个定义显然不能再适合现在情况。面向对象的思想已经涉

2、及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。2024/4/2727 四月 2024IT Education&Training面向对象的基本概念 对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物还可以是抽象的事物.对象的属性和行为:对象用数据值来描述状态。行为就是操作可以改变对象的状态.类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,

3、对象的抽象是类,类的具体化就是对象,类实际上就是一种数据类型。类的属性与方法通常又统称为类的成员成员。2024/4/2727 四月 2024IT Education&Training面向对象的特征 封装:类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护继承是指子类可以拥有父类所有的属性和方法,除了这些以外,子类自己还可以创建新的方法和属性多态:同一操作作用在不同对象上所的结果不一样,这 就是多态。也就是同一函数在不同的对象中所实现的功能不一样。2024/4/2727 四月 2024IT Education&Training创建

4、类定义类 class ClassName /包含属性和方法 class:关键字,说明声明了一个类 ClassName:类名。满足标识符的规定2024/4/2727 四月 2024IT Education&Training创建对象对象是通过类实例化出来的,使用new 关键字来生成一个对象语法:$对象名称=new 类名称();如定义了Person后,创建该类的对象$p1=new Person();$p2=new Person();2024/4/2727 四月 2024IT Education&Training使用对象中的成员PHP 对象中的成员有两种一种是成员属性,一种是成员方法.访问对象中的成员

5、就要使用一个特殊的操作符“-”来完成对象成员的访问.语法:对象-属性对象-方法如:$p1-name;$p1-age;$p1-sex;$p1-say();$p2-run();2024/4/2727 四月 2024IT Education&Training$this 的使用在类的外部,访问对象中的成员,可通过“对象-成员”的形式在类的内部,访问类的成员(属性或方法),使用 ”$this-成员“,代表本对象的引用如:2024/4/2727 四月 2024IT Education&Training构造方法构造方法是特殊方法。当使用new 这个关键字来创建一个对象时,它将自动调用构造方法。PHP5中,构

6、造方法的名称统一为_ _construct()。PHP4中如果一个方法与类同名时,这个方法将成为构造方法.与类同名的构造方法在PHP5 中仍然可以用,但现在很少有人用,这样做的好处是可以使构造函数独立于类名,当类名发生改变时不需要改相应的构造函数构造方法可以给对象做初始化的工作格式:function _ _construct(参数).2024/4/2727 四月 2024IT Education&Training构造方法注意:当与类同名的构造方法和_construct()同时存在时,后者优先调用有参构造方法创建对象,必须向构造方法中传参。$p=new Person(张三,20);定义构造方法时

7、可以给参数设置默认值,如此,可以调用无参的构造方法创建对象。2024/4/2727 四月 2024IT Education&Training析构方法PHP5中,引入析构方法的概念,可以及时释放对象所占用的内存析构方法_destruct()该方法没有参数,也没有返回值该方法在脚本关闭或对象引用被删除前被调用析构方法可用于关闭数据库,关闭文件或其他扫尾工作function _ _destruct()echo 对象即将销毁;2024/4/2727 四月 2024IT Education&Training封装封装是面向对象三大特征之一,含义有两层:把对象的属性和方法结合在一起尽可能隐藏对象的内部细节,

8、对外只保留有限的接口反映在设计上就是,封装可以保证对象以外的部分不能随意读写对象的内部数据PHP中封装涉及到的三个关键字public,protected,private2024/4/2727 四月 2024IT Education&Training类成员的可见性为控制类成员的可见性,限定对属性和方法的访问,使用以下三种访问修饰符public 表示全局,类内部外部子类都可以访问;protected表示受保护的,只有本类或子类或父类中可以访问;private表示私有的,只有本类内部可以使用;注意:只要属性前有修饰符,要把var去掉,var等同public的访问权限2024/4/2727 四月 20

9、24IT Education&Training_ _set(),_ _get()方法应用方法应用_set()方法:该方法有两个参数,第一个参数为要设置值的属性名,第二个参数是要给属性设置的值,没有返回值。在直接设置私有属性值的时候自动调用._get()方法:该方法用来获取私有成员属性值,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,该直接获取私有属性的时候对象自动调用的注意:两个方法是为了存取私有属性,如果成员属性不封装成私有的,对象本身就不会去自动调用这两个方法。2024/4/2727 四月 2024IT Education&Training继承PHP中,只支持单重继承通过

10、继承生成的子类,将自动拥用父类的有关属性和方法(父类中的私有成员除外)子类还可以定义自己的新属性和相应的新方法必要时,子类可重新声明父类的同名属性或重新定义父类的同名方法继承使用extends关键字 class B extends A 2024/4/2727 四月 2024IT Education&Training继承子类覆盖父类中同名的方法时,在子类里可以使用如下两个方法调用父类方法:一种是使用父类的“类名:”来调用父类中被覆盖的方法;一种是使用“parent:”的方试来调用父类中被覆盖的方法;2024/4/2727 四月 2024IT Education&Training访问修饰符-pro

11、tectedprotected 的成员不能被该类的外部代码访问。但是该类的子类有访问权限,可以进行属性、方法的读及写操作,该子类的外部代码包括其的子类都不具有访问其属性和方法的权限。2024/4/2727 四月 2024IT Education&Trainingfinal关键字Final 可以修饰类和方法被final修饰的类不能被继承被final修饰的方法不能被覆盖2024/4/2727 四月 2024IT Education&Trainingstatic关键字static 修饰的属性是静态属性,静态属性是属于类的,不属于任何对象实例,这样的属性在内存中只有一个,多个对象共用这一个属性静态属性

12、不可以由对象通过-操作符来访问。静态属性由类名:$静态属性来访问如:2024/4/2727 四月 2024IT Education&Trainingstatic关键字static修饰的方法称为静态方法,静态方法只能使用静态成员,不能访问非静态成员静态方法中访问静态属性不能使用$this,而是使用 self:$静态属性或是类名:静态属性非静态方法中访问静态属性也是使用 self:$静态属性或是类名:静态属性类外访问静态方法可以使用类名:静态方法直接调用,也可以使用对象直接调用2024/4/2727 四月 2024IT Education&Trainingconst关键字PHP中定义常量使用def

13、ine()函数,但在类里使用const定义常量,常量的值不能被修改在类外面使用时使用类名:常量名(没有$),方法内使用时使用self:常量名如:2024/4/2727 四月 2024IT Education&Training_toString()方法当定义一个对象如:$a=new Student();echo$a 这时运行将报错如果在类中定义_toString()方法,输出对象引用时将自动调用该方法,并输出该方法的返回值,且_toString()方法要有return语句2024/4/2727 四月 2024IT Education&Training克隆对象如果使用两个或多个一样的对象,可以使用

14、clone关键字克隆出一模一样的对象如果$t1=new Person();$t2=$t1,则对其中任何一个做属性的修改,都将影响另一个,而克隆的两个对象互不打扰PHP5中定义了一个特殊的方法_clone(),在对象克隆时自动调用,如果想克隆后改变原对象的内容,则需在该方法中重写原本的属性和方法。2024/4/2727 四月 2024IT Education&Training_call()方法处理调用错误使用对象调用方法时,如果方法不存在,运行时程序就会退出不能继续执行如果定义了_call()方法,在试图使用对象调用不存在的方法时,就会提示调用的方法和使用的参数不存在,但程序仍可以继续执行该方法

15、声明时包含两个参数,第一个参数是string型,是调用不存在方法的方法名(如$fname),第二个参数是array型,是调用的不存在的方法的参数(如$argus)。2024/4/2727 四月 2024IT Education&Training_autoload()函数调用一个类的时候,必须要先将该类所在的文件引入(include“xxx.php”),如果我们在一个页里调用的类很多,那么我们不得不使用许多的include“xxx.php”。显然这样很麻烦。遇到上述情况,只要定义_autoload()函数可以帮助我们解决问题该函数不是类方法,是独立的方法,有一个string类型的参数是声明不存在

16、类的类名,如下:function _autoload($className)include$className.php;2024/4/2727 四月 2024IT Education&Training抽象方法和抽象类在类中没有方法体的方法称为抽象方法,即方法名后面没有大括号和具体内容,方法名后直接是分号.抽象方法使用abstract来修饰如:abstract function fun1();如果类中有抽象方法,那么该类就要被abstract修饰,该类称为抽象类抽象类必须有抽象方法,但也可以有成员属性和非抽象的方法2024/4/2727 四月 2024IT Education&Training抽

17、象方法和抽象类抽象类是一种规范,要求子类去遵守,子类继承抽象类后,按照子类的需要将抽象类中的抽象方法实现抽象方法是作为子类重载的模板来使用,子类继承抽象类时必须将其中的抽象方法全部实现,否则子类仍然不能被实例化2024/4/2727 四月 2024IT Education&Training接口PHP不支持多继承,为了解决该问题,引入接口的概念抽象类是一种特殊的类,接口是一种特殊的抽象类,当类中所有的方法都是抽象方法时,此时就换一种称谓,类就叫做接口接口中不能声明变量,接口中所有的成员都是public权限的,包括子类实现时也要使用public权限接口的声明interface 接口名2024/4/

18、2727 四月 2024IT Education&Training接口接口中可以定义常量,且要赋初值。接口中所有的方法都是抽象的,所以可以将abstract去掉接口中所有方法的访问权限都是public,所以也可以将public去掉接口可以使用extends继承其他接口2024/4/2727 四月 2024IT Education&Training接口的实现定义一个子类,使用关键字implements 实现接口中的全部抽象方法一个类可以同时实现多个接口一个类既可以继承一个父类,又可以同时实现多个接口2024/4/2727 四月 2024IT Education&Traininginstanceo

19、f运算符该运算符可以判断一个对象是否是一个类的实例$c=new Child;if($c instanceof Child)echo“yes;输出yes2024/4/2727 四月 2024IT Education&Training多态多态性是指一段程序能够处理多种类型对象的能力PHP中虽然可以实现多态,但和c+还有Java这些面向对象的语言相比,多态性并不是那么突出,因为PHP本身就是一种弱类型的语言,不存在父类对象转化为子类对象或者是子类对象转化为父类对象的问题 重载和重写:PHP的同一个类中不能出现同名方法,所以所谓的重载其实和Java中的重写类似,指的是在子类中可以重新定义父类中的方法。

20、2024/4/2727 四月 2024IT Education&Training对象串行化两种情况我们必须把对象串行化,第一种情况就是把一个对象在网络中传输的时候要将对象串行化,第二种情况就是把对象写入文件或是数据库的时候用到串行化。串行化有两个过程,一个是串行化,就是把对象转化为二进制的字符串,我们使用serialize()函数来串行化一个对象,另一个是反串行化,就是把对象转化的字符串再转化为对象,我们使用unserialize()函数来反串行化一个对象.2024/4/2727 四月 2024IT Education&Trainingserialize()函数PHP中serialize()函

21、数的参数为对象名,返回值为一个字符串,Serialize()返回的字符串含义模糊,一般我们不会解析这个串来得到对象的信息,我们只要把返回来的这个字符串传到网络另一端或是保存到方件中即可。2024/4/2727 四月 2024IT Education&Trainingunserialize()函数PHP中unserialize()函数来反串行化对象,这个函数的参数即为serialize()函数的返回值,输出当然是重新组织好的对象.2024/4/2727 四月 2024IT Education&Training_sleep()函数和_wakeup()函数 在对象串行化的时候,会调用一个_sleep

22、()函数来完成一些睡前的事情;而在重新醒来,即由二进制串重新组成一个对象的时候,则会自动调用PHP的另一个函数_wakeup(),做一些对象醒来就要做的动作。_sleep()函数不接受任何参数,但返回一个数组,其中包含需要串行化的属性。末被包含的属性将在串行化时被忽略,如果没有_sleep()方法,PHP将保存所有属性。2024/4/2727 四月 2024IT Education&Training课堂练习编写一个图书信息类Book。属性受保护的,包括书名bookName,作者author,价格price提供有参构造方法,析构方法,访问器方法(如果价格赋值不是数字,则将价格赋值为0),输出图书

23、信息的方法displayBook。创建对象测试该类2024/4/2727 四月 2024IT Education&Training课堂练习编写一个小说信息类Novel继承Book类。添加私有属性小说描述desc。添加有参构造方法,允许使用者通过构造方法为所有属性赋值。重载displayBook方法,将小说所有信息以表格形式打印出来。提供克隆方法,当克隆一个新的小说对象时,要求将desc的值设为“待添加”。编写displayDesc方法,用绿色背景的div显示小说的描述信息。2024/4/2727 四月 2024IT Education&Training课堂练习实现:当打印小说对象时,会输出当前

24、的小说名称(红色字体,带书名号)。实现:当用户调用display(1)的时候,运行displayBook方法,调用display(2)的时候,运行displayDesc方法。实现:小说对象可以序列化,除了desc外的其他属性都进行序列化。小说对象被反序列化时,price的值设置为0。2024/4/2727 四月 2024IT Education&Training课堂练习编写类DisplayTable,用来以表格形式显示指定数据库中的任意数据表的信息。属性:数据库的主机名用户名密码数据库名表名结果集2024/4/2727 四月 2024IT Education&Training课堂练习方法:构造方法:连接数据库服务器,选择数据库,执行SQL语句,获得结果集对象打印数据表方法:将数据表中的所有信息显示到浏览器上。2024/4/2727 四月 2024IT Education&Training答疑2024/4/27

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!