收藏 分销(赏)

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

上传人:a199****6536 文档编号:8908225 上传时间:2025-03-07 格式:PPTX 页数:39 大小:442.40KB 下载积分:12 金币
下载 相关 举报
第10章-面向对象编程.pptx_第1页
第1页 / 共39页
第10章-面向对象编程.pptx_第2页
第2页 / 共39页


点击查看更多>>
资源描述
面向对象编程,第十章,目录,01,面向对象,的基本概念,02,类,的声明,03,类,的实例化,06,常见,的关键字和魔术方法,04,面向对象的封装,性,05,面向对象的继承性,07,抽象类和接口,01,面向对象,的基本概念,类,在面向对象的编程语言中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合。简单来说,类表示一个客观世界的某类群体。例如,创建一个猫(,Cat,)类,包括,4,个属性:猫龄、猫名、颜色和品种;包括,3,个方法:跑、叫和捉老鼠。,01,面向对象,的基本概念,对象,类就是,我们现实世界将事物分类一样,在程序设计中也需要将一些相关的变量定义和函数的声明归类,形成一个自定义的类型。通过这个类型可以创建多个实体,一个实体就是一个对象,每个对象都具有该类中定义的内容特征。,01,面向对象,的基本概念,面向对象,的特点,面向对象由,3,个重要的特点:封装性、继承性和多态性。下面将对这,3,个特征进行详细的介绍。,1,.,封装,性,封装是面向对象的核心思想,封装性其实就是将一个类的使用和实现分开,不需要让外界知道具体实现的细节,只保留有限的接口(方法)与外界联系。对于开发人员来说,只需要知道这个类如何使用,而不用关心这个类是如何实现的,。,01,面向对象,的基本概念,2.,继承性,继承性主要描述的是类与类之间的关系,指派生类(子类)自动继承一个或多个基类(父类)中的属性和方法,并可以重写或添加新的属性和方法。继承不仅增强了代码的重用性,提高了程序开发效率,而且为程序的修改补充提供了便利。,3.,多态性,多态性是指同一方法作用于不同的对象,会产生不同的执行结果。多态性增强了软件的灵活性和重用性。,02,类,的声明,定义类,在,PHP,中,类是由,class,关键字、类名和成员组成的。类的成员包括属性和方法,属性用于描述对象的特征,方法用于描述对象的行为。类的语法如下所示:,权限修饰符,class,类名,/,成员属性,/,成员方法,02,类,的声明,权限,修饰符是可选项,可以使用,public,、,protected,、,private,或者省略。,class,是创建类的关键字。,类,名的定义与函数的命名规则类似,如果由多个单词组成,习惯上每个单词的首字母要大写,并且类名要有一定的意义,见其名知其意。,02,类,的声明,成员属性,在类中直接声明的变量成为成员属性(也可以成为成员变量),可以在类中声明多个变量,即对象由多个成员属性,每个变量都存储对象不同的属性信息。成员属性可以使用,PHP,中的标量类型和复合类型,但是使用资源和空类型并没有意义,。,02,类,的声明,成员方法,在类中直接声明的函数成为成员方法,可以在类中声明多个函数,对象中就有多个成员方法。成员方法的声明和函数的声明完全相同,但是成员方法可以加一些关键字的修饰来限制成员方法的权限,如,public,、,private,、,static,等。但是声明成员方法必须和对象有关,不能是一些没有意义的操作。,03,类,的实例化,对象,的创建,定义好类之后并不能直接使用,需要根据类创建具体的对象,也就是要实例化类。,PHP,中使用关键字,new,来创建对象,语法格式如下所示:,$,对象名,=new,类名,(,参数,1,,参数,2,,,);,其中,“,$,对象名”表示通过类所创建的一个对象的引用名称,用于访问对象中的成员;“,new”,表示要创建一个新的对象;类名表示新对象的类型;类名后面括号中的参数是可选的,指定类的构造方法用于初始化对象的值,如果类中没有定义构造方法,,PHP,会自动创建一个不带参数的默认构造方法,。,03,类,的实例化,访问,类中的成员,类中包括成员属性和成员方法,访问类中的成员包括访问成员属性和成员方法。在对类进行实例化后就可以通过“对象,-,成员”的方式来访问成员属性和成员方法,访问对象中的成员的语法格式如下所示:,$,变量名,=new,类名称,(,参数,);,/,类的实例化,$,变量名,-,成员属性,=,值,;,/,为成员属性赋值,$,变量名,-,成员属性,;,/,直接获取成员属性值,$,变量名,-,成员方法,;,/,访问对象中指定的,方法,03,类,的实例化,特殊,的对象引用“,$this”,类,一旦被创建,在类中的每个成员方法里面都会存在一个特殊的对象引用“,$this”,,成员方法属于哪个类,,$this,引用就代表哪个类,专门用来完成类内部成员之间的访问。使用,$this,变量可以引用该类中的其他方法和属性,并使用“,-”,作为连接符,如下所示:,$this-,属性,;,$this-,方法,;,注意:在使用,$this,引用类自身的方法时,直接加方法名并为方法指定参数即可。如果引用的是类的属性,一定注意不要加“,$”,。,03,类,的实例化,构造,方法和析构方法,1,构造方法,构造方法是对象创建完成后第一个被对象自动调用的方法,通常使用构造方法完成一些对象的初始化工作。每一个声明类中都有一个构造方法,它是一个特殊的成员方法,如果类中没有直接声明它,类中会默认生成一个没有参数列表并且内容为空的构造方法,如果类中声明了它,则类中默认的构造方法将不会存在,。,03,类,的实例化,在,PHP,中,声明构造方法的方法与声明其他成员方法类似,不同的地方在于构造方法的方法名必须是以两个下划线开始的“,_construct”,,这是,PHP5,版本之后的变化。其语法格式如下所示:,访问控制修饰符,function _construct(,参数列表,),/,初始化操作,其中,访问控制修饰符可以省略,默认为,public,。并且同一个类中只能声明一个构造方法。,03,类,的实例化,2.,析构方法,与构造方法相对应,析构方法是对象在销毁之前最后一个被对象自动调用的方法,通常使用析构方法完成一些对象在销毁前的清理工作。例如,关闭文件、释放结果等。,析构方法与构造方法的声明方式相似,在类中声明的析构方法名称也是固定的,用以两个下划线开头的方法名“,_destruct”,来声明,而且析构方法不能带有任何参数。其语法格式如下所示:,Function _destruct(),/,方法体,通常用来完成一些在对象销毁之前的清理工作,03,类,的实例化,注意:,析,构方法并不是很常用,它属于类中可选的一部分,只有需要时才在类中声明。析构方法一般情况下不需要手动调用。在使用,unset(),函数释放对象,或者,PHP,脚本执行结束自动释放对象时,析构方法将会被自动调用。,03,类,的实例化,匿名,类,在,PHP7,版本开始,面向对象编程中支持匿名类的实现,,PHP7,中通过,new class,来实例化一个匿名类。所谓匿名类,是指没有名称的类,只能在创建时用,new,语句来声明,可以创建一次性的简单对象,。,04,面向对象,的封装性,封装,性是面向对象编程的特点之一,就是将类中成员属性和成员方法结合成一个独立的相同单位,并尽可能的隐藏对象的内容细节。封装性可以防止类的成员被外界随意访问,导致设置或修改不合理的情况发生,使类的设置更加的安全可靠,。,04,面向对象,的封装性,在,PHP,中。类的封装是通过访问控制修饰符,public,、,private,、,protected,来实现的。其具体的作用范围如,表所示。,在上表中,,,“,”,表示允许访问,,“,”,表示不予许访问。如果类的成员没有指定访问控制修饰符,默认为,public,。,范围 类型,同一个类内,子类,类外,public,protected,private,05,面向对象,的继承性,面向对象另外一个重要的特征是继承性,它是指建立一个新的派生类,继承另一个已经存在的类的成员属性和成员方法,其中被继承的类称为基类或父类,继承的类称为派生类或子类。,05,面向对象,的继承性,继承,关键字,extends,类的继承是类与类之间的一种关系的体现。子类不仅有自己的属性和方法,还拥有父类的所有属性和方法。,在,PHP,中,提供了,extends,关键字来实现类的继承,语法格式如下:,Class,子类名称,extends,父类名称,/,类体,注意:,PHP,只允许单继承,即每个子类只能继承一个父类,不能同时集成多个父类。,06,常见,的关键字和魔术方法,在,PHP,中,面向对象程序设计提供了一些常见的关键字,用来修饰类、成员属性和成员方法,使它们具有特定的功能,例如,final,、,static,、,const,等关键字。除此之外,还提供了一些常用的魔术方法,用来提高类或对象的应用能力。,06,常见,的关键字和魔术方法,常见,的关键字,1.final,关键字,final,关键字有最终的含义。在,PHP,中,在类或者类中方法前加,final,关键字,有以下作用:,使用,final,标识的类,不能被继承。,在,类中使用,final,标识的成员方法,在类中不能被重写,也不能被覆盖。,06,常见,的关键字和魔术方法,2,.static,关键字,在,PHP,中,可以使用,static,关键字来标识静态成员,既可以标识成员属性,又可以标识成员方法。类中的静态成员不需要实例化对象,而是使用类名直接访问的。具体语法如下:,public,static,属性名;,/,声明静态属性,public static,方法名,()/,声明静态方法,类,名,:,静态成员,注意:,静态成员是属于类的,不需要通过对象调用,所以,$this,在静态方法中不可用。需要使用范围解析操作符“:”来访问类中的成员。,06,常见,的关键字和魔术方法,3.const,关键字,在,PHP,中定义常量时使用,define(),函数来定义的,但是要将类中的成员属性定义为常量,只能使用,const,关键字来实现。其语法如下:,const,类常量名,=,常量值,;,在类内访问常量时,使用“,self,:常量名称”来访问。在类外访问常量时,通过“类名:常量名称”来进行访问。,06,常见,的关键字和魔术方法,4.clone,关键字,对象的克隆通过,clone,关键字,可以建立一个对象的副本,改变原来对象时不影响到副本。用,clone,关键字克隆对象的语法格式如下:,$,克隆对象名称,=clone$,原对象名称,;,对象克隆成功后,它们中的成员方法、属性和值是完全相同的。如果要完成对新对象的某些属性重新初始化的操作,可以在,PHP,提供的魔术方法,_clone(),中进行相关的设置。,06,常见,的关键字和魔术方法,5.instanceof,关键字,关键字,instanceof,可以确定一个对象是类的实例、类的子类,还是实现了某个特定接口,并进行相应操作。其语法格式如下:,ObjectName instanceof ClassName,06,常见,的关键字和魔术方法,常见的魔术,方法,1._set(),和,_get(),方法,_set(),和,_get(),方法是用于对私有成员进行赋值或者获取值的操作。,set(),方法需要在声明类时自己将它加到类中才可以使用,在类中声明的格式如下:,void _set(string name,mixed value),该方法在程序运行过程中为私有的成员属性设置值,它不需要返回值。其中,,name,表示属性名称,,value,表示为属性设置的值。而且该方法不需要主动调用,可以在方法前面加上,private,关键字修饰,防止用户直接调用,。,06,常见,的关键字和魔术方法,_,get(),方法和,_set(),方法一样,需要在声明类时自己将它加到类中才可以使用,在类中声明的格式如下:,mixed _get(string name),该方法在程序运行过程中,在对象的外部获取私有成员属性的值。它有一个必要参数,name,,表示私有成员属性的名称,并返回一个值,是在这个方法中处理后的允许对象外部使用的值。而且该方法也不需要主动调用,可以在方法前面加上,private,关键字修饰,防止用户直接调用,。,06,常见,的关键字和魔术方法,2._isset(),和,_unset(),方法的使用,isset,(),是用来检测变量是否存在,如果存在,则返回,true,,如果不存在,则返回,false,。在面向对象中,如果对象中的成员属性是公有的,我们可以直接使用,isset(),方法来进行检测。但如果是私有的成员属性,这个方法就不起作用了。可以使用魔术方法,_isset(),来进行检测。该方法的声明格式如下:,bool _isset(string name),如果类中添加了此方法,在对象的外部使用“,isset()”,方法检测对象中的成员时,就会自动调用对象中的“,_isset”,方法,间接的帮助我们完成了对对象中私有成员属性的检测,。,06,常见,的关键字和魔术方法,unset,(),方法是用来删除指定的变量,参数为要删除的变量名称。在面向对象中,如果对象中成员属性时公有的,我们可以可以使用,unset(),来进行删除。但如果是私有的成员属性,就需要使用,_unset(),方法帮助我们间接的将私有的成员属性删除。该方法的声明格式如下:,void _unset(string name),06,常见,的关键字和魔术方法,3._call(),方法,_call(),方法用于程序调用不存在或者不可见的成员方法时,就会自动调用该方法,并且程序也可以继续向下执行。,_call(),方法包含两个参数,第一个参数是调用不存在的方法时,接收这个名称的字符串,第二个参数表示方法参数,其中,方法参数是以数组的形式存在的。,06,常见,的关键字和魔术方法,4._tostring(),方法,魔术方法,_tostring(),是快速获取对象的字符串表示的最便捷的方式,它是在直接输出对象引用时自动调用的方法,。,5.,自动,加载,类,在,PHP,提供了类的自动加载功能,这样可以节省编程的时间,使用,_autoload(),的全局函数来实现。,07,抽象,类和接口,抽象,类,抽象类是一种特殊的类,用于定义某种行为,是一种不能被实例化的类,只能作为其他类的父类使用。抽象类使用,abstract,关键字来声明,其语法格式如下:,abstract class,抽象类名称,abstract function,成员方法,(,参数,);/,定义抽象方法,07,抽象,类和接口,在,使用,abstract,修饰抽象类和方法时应注意以下几点:,抽象方法是只有方法声明而没有方法体的特殊方法;,抽象类至少要包含一个抽象方法;,含有抽象方法的类必须被定义成抽象类;,抽象类中可以有非抽象方法、成员属性和常量;,抽象类不能被实例化,只能被继承;,子类继承抽象类时必须实现抽象方法,否则也必须定义成抽象方法由下一个类继承。,注意:,子类在实现抽象类中的抽象方法时,访问控制修饰符必须和抽象类中的一致或者更广泛。,07,抽象,类和接口,接口,1,.,接口的声明,接口通过,interface,关键字来声明,接口中声明的方法都是抽象方法,并且不能在接口中声明变量,只能使用,const,关键字声明常量的成员属性,而且接口中所有成员必须有,public,的访问权限。接口的声明格式如下:,Interface,接口名称,/,常量名称,/,抽象方法,07,抽象,类和接口,2.,接口的使用,接口的方法没有具体实现,因此,需要通过某个类使用,implements,关键字实现接口。如果要实现多个接口,将要实现的多个接口之间使用逗号隔开,而且在子类中要将所有接口中的抽象方法全部实现才可以创建对象。,本章小结,本章主要对面向对象的基本概念和各种特征进行了阐述,并详细介绍了类的创建方式和常用的关键字的使用方法。通过本章的学习,大家应该了解面向对象的编程思想,并具备编写程序中的基本类的能力。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服