第10章-面向对象编程.pptx

上传人:知****量 文档编号:78679157 上传时间:2023-03-18 格式:PPTX 页数:39 大小:442.40KB
返回 下载 相关 举报
第10章-面向对象编程.pptx_第1页
第1页 / 共39页
第10章-面向对象编程.pptx_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《第10章-面向对象编程.pptx》由会员分享,可在线阅读,更多相关《第10章-面向对象编程.pptx(39页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、面向对象编程第十章目录01 面向对象的基本概念02 类的声明03 类的实例化06 常见的关键字和魔术方法04 面向对象的封装性05 面向对象的继承性07 抽象类和接口01 面向对象的基本概念类在面向对象的编程语言中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合。简单来说,类表示一个客观世界的某类群体。例如,创建一个猫(Cat)类,包括4个属性:猫龄、猫名、颜色和品种;包括3个方法:跑、叫和捉老鼠。01 面向对象的基本概念对象类就是我们现实世界将事物分类一样,在程序设计中也需要将一些相关的变量定义和函数的声明归类,形成一个自定义的类型。通过这个类型可以创建多个实体,一个实体就是一

2、个对象,每个对象都具有该类中定义的内容特征。01 面向对象的基本概念面向对象的特点面向对象由3个重要的特点:封装性、继承性和多态性。下面将对这3个特征进行详细的介绍。1.封装性封装是面向对象的核心思想,封装性其实就是将一个类的使用和实现分开,不需要让外界知道具体实现的细节,只保留有限的接口(方法)与外界联系。对于开发人员来说,只需要知道这个类如何使用,而不用关心这个类是如何实现的。01 面向对象的基本概念2.继承性继承性主要描述的是类与类之间的关系,指派生类(子类)自动继承一个或多个基类(父类)中的属性和方法,并可以重写或添加新的属性和方法。继承不仅增强了代码的重用性,提高了程序开发效率,而且

3、为程序的修改补充提供了便利。3.多态性多态性是指同一方法作用于不同的对象,会产生不同的执行结果。多态性增强了软件的灵活性和重用性。02 类的声明定义类在PHP中,类是由class关键字、类名和成员组成的。类的成员包括属性和方法,属性用于描述对象的特征,方法用于描述对象的行为。类的语法如下所示:权限修饰符class 类名/成员属性/成员方法02 类的声明权限修饰符是可选项,可以使用public、protected、private或者省略。class 是创建类的关键字。类名的定义与函数的命名规则类似,如果由多个单词组成,习惯上每个单词的首字母要大写,并且类名要有一定的意义,见其名知其意。02 类的

4、声明成员属性在类中直接声明的变量成为成员属性(也可以成为成员变量),可以在类中声明多个变量,即对象由多个成员属性,每个变量都存储对象不同的属性信息。成员属性可以使用PHP中的标量类型和复合类型,但是使用资源和空类型并没有意义。02 类的声明成员方法在类中直接声明的函数成为成员方法,可以在类中声明多个函数,对象中就有多个成员方法。成员方法的声明和函数的声明完全相同,但是成员方法可以加一些关键字的修饰来限制成员方法的权限,如public、private、static等。但是声明成员方法必须和对象有关,不能是一些没有意义的操作。03 类的实例化对象的创建定义好类之后并不能直接使用,需要根据类创建具体

5、的对象,也就是要实例化类。PHP中使用关键字new来创建对象,语法格式如下所示:$对象名=new 类名(参数1,参数2,);其中,“$对象名”表示通过类所创建的一个对象的引用名称,用于访问对象中的成员;“new”表示要创建一个新的对象;类名表示新对象的类型;类名后面括号中的参数是可选的,指定类的构造方法用于初始化对象的值,如果类中没有定义构造方法,PHP会自动创建一个不带参数的默认构造方法。03 类的实例化访问类中的成员类中包括成员属性和成员方法,访问类中的成员包括访问成员属性和成员方法。在对类进行实例化后就可以通过“对象-成员”的方式来访问成员属性和成员方法,访问对象中的成员的语法格式如下所

6、示:$变量名=new 类名称(参数);/类的实例化$变量名-成员属性=值;/为成员属性赋值$变量名-成员属性;/直接获取成员属性值$变量名-成员方法;/访问对象中指定的方法03 类的实例化特殊的对象引用“$this”类一旦被创建,在类中的每个成员方法里面都会存在一个特殊的对象引用“$this”,成员方法属于哪个类,$this引用就代表哪个类,专门用来完成类内部成员之间的访问。使用$this变量可以引用该类中的其他方法和属性,并使用“-”作为连接符,如下所示:$this-属性;$this-方法;注意:在使用$this引用类自身的方法时,直接加方法名并为方法指定参数即可。如果引用的是类的属性,一定

7、注意不要加“$”。03 类的实例化构造方法和析构方法1构造方法构造方法是对象创建完成后第一个被对象自动调用的方法,通常使用构造方法完成一些对象的初始化工作。每一个声明类中都有一个构造方法,它是一个特殊的成员方法,如果类中没有直接声明它,类中会默认生成一个没有参数列表并且内容为空的构造方法,如果类中声明了它,则类中默认的构造方法将不会存在。03 类的实例化在PHP中,声明构造方法的方法与声明其他成员方法类似,不同的地方在于构造方法的方法名必须是以两个下划线开始的“_construct”,这是PHP5版本之后的变化。其语法格式如下所示:访问控制修饰符 function _construct(参数列

8、表)/初始化操作其中,访问控制修饰符可以省略,默认为public。并且同一个类中只能声明一个构造方法。03 类的实例化2.析构方法与构造方法相对应,析构方法是对象在销毁之前最后一个被对象自动调用的方法,通常使用析构方法完成一些对象在销毁前的清理工作。例如,关闭文件、释放结果等。析构方法与构造方法的声明方式相似,在类中声明的析构方法名称也是固定的,用以两个下划线开头的方法名“_destruct”来声明,而且析构方法不能带有任何参数。其语法格式如下所示:Function _destruct()/方法体,通常用来完成一些在对象销毁之前的清理工作03 类的实例化注意:析构方法并不是很常用,它属于类中可

9、选的一部分,只有需要时才在类中声明。析构方法一般情况下不需要手动调用。在使用unset()函数释放对象,或者PHP脚本执行结束自动释放对象时,析构方法将会被自动调用。03 类的实例化匿名类在PHP7版本开始,面向对象编程中支持匿名类的实现,PHP7中通过new class来实例化一个匿名类。所谓匿名类,是指没有名称的类,只能在创建时用new语句来声明,可以创建一次性的简单对象。04 面向对象的封装性封装性是面向对象编程的特点之一,就是将类中成员属性和成员方法结合成一个独立的相同单位,并尽可能的隐藏对象的内容细节。封装性可以防止类的成员被外界随意访问,导致设置或修改不合理的情况发生,使类的设置更

10、加的安全可靠。04 面向对象的封装性在PHP中。类的封装是通过访问控制修饰符public、private、protected来实现的。其具体的作用范围如表所示。在上表中,“”表示允许访问,“”表示不予许访问。如果类的成员没有指定访问控制修饰符,默认为public。范范围 类型型同一个同一个类内内子子类类外外publicprotectedprivate05 面向对象的继承性面向对象另外一个重要的特征是继承性,它是指建立一个新的派生类,继承另一个已经存在的类的成员属性和成员方法,其中被继承的类称为基类或父类,继承的类称为派生类或子类。05 面向对象的继承性继承关键字extends类的继承是类与类之

11、间的一种关系的体现。子类不仅有自己的属性和方法,还拥有父类的所有属性和方法。在PHP中,提供了extends关键字来实现类的继承,语法格式如下:Class 子类名称 extends 父类名称/类体注意:PHP只允许单继承,即每个子类只能继承一个父类,不能同时集成多个父类。06 常见的关键字和魔术方法在PHP中,面向对象程序设计提供了一些常见的关键字,用来修饰类、成员属性和成员方法,使它们具有特定的功能,例如final、static、const等关键字。除此之外,还提供了一些常用的魔术方法,用来提高类或对象的应用能力。06 常见的关键字和魔术方法常见的关键字1.final关键字final关键字有

12、最终的含义。在PHP中,在类或者类中方法前加final关键字,有以下作用:使用final标识的类,不能被继承。在类中使用final标识的成员方法,在类中不能被重写,也不能被覆盖。06 常见的关键字和魔术方法2.static关键字在PHP中,可以使用static关键字来标识静态成员,既可以标识成员属性,又可以标识成员方法。类中的静态成员不需要实例化对象,而是使用类名直接访问的。具体语法如下:public static 属性名;/声明静态属性public static 方法名()/声明静态方法类名:静态成员注意:静态成员是属于类的,不需要通过对象调用,所以$this在静态方法中不可用。需要使用范围

13、解析操作符“:”来访问类中的成员。06 常见的关键字和魔术方法3.const关键字在PHP中定义常量时使用define()函数来定义的,但是要将类中的成员属性定义为常量,只能使用const关键字来实现。其语法如下:const 类常量名=常量值;在类内访问常量时,使用“self:常量名称”来访问。在类外访问常量时,通过“类名:常量名称”来进行访问。06 常见的关键字和魔术方法4.clone关键字对象的克隆通过clone关键字,可以建立一个对象的副本,改变原来对象时不影响到副本。用clone关键字克隆对象的语法格式如下:$克隆对象名称=clone$原对象名称;对象克隆成功后,它们中的成员方法、属性

14、和值是完全相同的。如果要完成对新对象的某些属性重新初始化的操作,可以在PHP提供的魔术方法_clone()中进行相关的设置。06 常见的关键字和魔术方法5.instanceof关键字关键字instanceof可以确定一个对象是类的实例、类的子类,还是实现了某个特定接口,并进行相应操作。其语法格式如下:ObjectName instanceof ClassName06 常见的关键字和魔术方法常见的魔术方法1._set()和_get()方法_set()和_get()方法是用于对私有成员进行赋值或者获取值的操作。set()方法需要在声明类时自己将它加到类中才可以使用,在类中声明的格式如下:void

15、_set(string name,mixed value)该方法在程序运行过程中为私有的成员属性设置值,它不需要返回值。其中,name表示属性名称,value表示为属性设置的值。而且该方法不需要主动调用,可以在方法前面加上private关键字修饰,防止用户直接调用。06 常见的关键字和魔术方法_get()方法和_set()方法一样,需要在声明类时自己将它加到类中才可以使用,在类中声明的格式如下:mixed _get(string name)该方法在程序运行过程中,在对象的外部获取私有成员属性的值。它有一个必要参数name,表示私有成员属性的名称,并返回一个值,是在这个方法中处理后的允许对象外部

16、使用的值。而且该方法也不需要主动调用,可以在方法前面加上private关键字修饰,防止用户直接调用。06 常见的关键字和魔术方法2._isset()和_unset()方法的使用isset()是用来检测变量是否存在,如果存在,则返回true,如果不存在,则返回false。在面向对象中,如果对象中的成员属性是公有的,我们可以直接使用isset()方法来进行检测。但如果是私有的成员属性,这个方法就不起作用了。可以使用魔术方法_isset()来进行检测。该方法的声明格式如下:bool _isset(string name)如果类中添加了此方法,在对象的外部使用“isset()”方法检测对象中的成员时,

17、就会自动调用对象中的“_isset”方法,间接的帮助我们完成了对对象中私有成员属性的检测。06 常见的关键字和魔术方法unset()方法是用来删除指定的变量,参数为要删除的变量名称。在面向对象中,如果对象中成员属性时公有的,我们可以可以使用unset()来进行删除。但如果是私有的成员属性,就需要使用_unset()方法帮助我们间接的将私有的成员属性删除。该方法的声明格式如下:void _unset(string name)06 常见的关键字和魔术方法3._call()方法_call()方法用于程序调用不存在或者不可见的成员方法时,就会自动调用该方法,并且程序也可以继续向下执行。_call()方

18、法包含两个参数,第一个参数是调用不存在的方法时,接收这个名称的字符串,第二个参数表示方法参数,其中,方法参数是以数组的形式存在的。06 常见的关键字和魔术方法4._tostring()方法魔术方法_tostring()是快速获取对象的字符串表示的最便捷的方式,它是在直接输出对象引用时自动调用的方法。5.自动加载类在PHP提供了类的自动加载功能,这样可以节省编程的时间,使用_autoload()的全局函数来实现。07 抽象类和接口抽象类抽象类是一种特殊的类,用于定义某种行为,是一种不能被实例化的类,只能作为其他类的父类使用。抽象类使用abstract关键字来声明,其语法格式如下:abstract

19、 class 抽象类名称abstract function 成员方法(参数);/定义抽象方法07 抽象类和接口在使用abstract修饰抽象类和方法时应注意以下几点:抽象方法是只有方法声明而没有方法体的特殊方法;抽象类至少要包含一个抽象方法;含有抽象方法的类必须被定义成抽象类;抽象类中可以有非抽象方法、成员属性和常量;抽象类不能被实例化,只能被继承;子类继承抽象类时必须实现抽象方法,否则也必须定义成抽象方法由下一个类继承。注意:子类在实现抽象类中的抽象方法时,访问控制修饰符必须和抽象类中的一致或者更广泛。07 抽象类和接口接口1.接口的声明接口通过interface关键字来声明,接口中声明的方

20、法都是抽象方法,并且不能在接口中声明变量,只能使用const关键字声明常量的成员属性,而且接口中所有成员必须有public的访问权限。接口的声明格式如下:Interface 接口名称/常量名称/抽象方法07 抽象类和接口2.接口的使用接口的方法没有具体实现,因此,需要通过某个类使用implements关键字实现接口。如果要实现多个接口,将要实现的多个接口之间使用逗号隔开,而且在子类中要将所有接口中的抽象方法全部实现才可以创建对象。本章小结本章主要对面向对象的基本概念和各种特征进行了阐述,并详细介绍了类的创建方式和常用的关键字的使用方法。通过本章的学习,大家应该了解面向对象的编程思想,并具备编写程序中的基本类的能力。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com