《Web应用开发》课件-任务6 PHP面向对象编程_第1页
《Web应用开发》课件-任务6 PHP面向对象编程_第2页
《Web应用开发》课件-任务6 PHP面向对象编程_第3页
《Web应用开发》课件-任务6 PHP面向对象编程_第4页
《Web应用开发》课件-任务6 PHP面向对象编程_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

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

文档简介

PHP面向对象编程任务6主讲人学习目标/Target理解什么是面向对象掌握类与对象的使用方法

掌握类常量和静态成员的使用方法理解面向对象的三大特征任务概述/Summary随着PHP语言的不断发展,PHP中的面向对象语法也逐步向主流的面向对象语言靠拢,使得PHP能够处理越来越复杂的需求。因此,对于PHP开发人员来说,掌握面向对象编程是必备的重要技能之一。本任务将对面向对象的知识进行详细讲解。目录/Contents01020304初识面向对象类与对象的使用类常量和静态成员面向对象三大特性目录/Contents05060708继承Trait代码复用接口对象遍历初识面向对象6.16.1.1面向过程与面向对象

先定一个小目标!熟悉面向过程与面向对象,能够说出面向过程与面向对象思想的区别6.1.1面向过程与面向对象什么是面向过程:将要实现的功能分解成具体步骤,然后利用函数把这些步骤依次实现,使用时按规定顺序调用即可。什么是面向对象:一种更符合人类思维习惯的编程思想,它分析现实生活中存在的各种形态不同的事物,通过程序中的对象来映射现实中的事物,使用对象的关系来描述事物之间的联系。6.1.1面向过程与面向对象面向过程和面向对象的对比:面向过程侧重于完成任务经历的每一个步骤,将这些步骤定义成函数,依次调用完成整个任务。面向对象侧重于用什么对象解决什么问题,每一个对象中都包含了若干变量和函数,把变量称为对象的属性,函数称为对象的方法。//输出某个学生对象的姓名echo$student->name; //获取$student对象的name属性//让某个学生对象打招呼$student->sayHello(); //调用$student对象的sayHello()方法对象的使用代码示例6.1.1面向过程与面向对象一个应用程序中可能包含多个对象,需要多个对象的相互配合来实现应用程序的功能。//老师布置作业$work=$teacher->createWork();//学生做作业$result=$student->doWork($work);//老师批改作业$score=$teacher->check($result);//输出学生的作业成绩echo$student->name.'的考试成绩为:'.$score;面向对象代码示例6.1.2面向对象中的类与对象

先定一个小目标!熟悉面向对象中的类与对象,能够说出类与对象的基本概念,能够说出类与对象的区别6.1.2面向对象中的类与对象类(class):对某一类事物的抽象描述,类是对象(object)的模板,类中包含该类事物的一些基本特征。对象:用于表示现实中该事物的个体,对象是根据类创建的,一个类可以创建多个对象。通过类创建对象的过程称为实例化,把一个类的对象称为这个类的实例。6.1.2面向对象中的类与对象以商品为例演示类与对象的关系:类与对象的使用6.26.2.1类的定义

先定一个小目标!掌握类的定义,能够编写代码完成类的定义6.2.1类的定义类的定义方法:类由class关键字、类名和成员组成。类的成员:属性和方法。类属性方法用于描述对象的特征,例如,人的姓名、年龄等用于描述对象的行为,如说话、走路等。6.2.1类的定义class

类名{//成员属性

//成员方法}代码示例6.2.1类的定义类名的定义规则:不区分大小写,如Student、student都表示同一个类。推荐使用大驼峰法命名,即每个单词的首字母大写,如Student。类名要见其名知其意,如Student表示学生类,Teacher表示教师类。6.2.2实例化类

先定一个小目标!掌握类的实例化,能够编写代码对类进行实例化,获得一个对象6.2.2实例化类什么是实例化类:根据类创建对应的对象,通过对象使用类的功能。$对象名=new

类名([参数1,参数2,...]);语法格式$对象名:表示创建对象的实例,通过这个实例可以访问对象中的成员new:表示要创建一个新的对象类名:表示对象的类名6.2.2实例化类classPerson//定义Person类{}$person=newPerson();//实例化Person类var_dump($person);//输出结果:object(Person)#1(1){}案例:类和对象的使用6.2.3类成员

先定一个小目标!掌握类成员的使用,能够为类定义类成员,能够实现类成员的访问6.2.3类成员什么是类成员:在类名后的“{}”中定义的一级成员属于类成员,类成员分为成员属性和成员方法,在实例化类后,可以通过实例化的对象来访问成员属性和成员方法。使用类成员:使用对象成员访问符号“->”调用类成员,在它后面直接跟属性名或方法名即可,方法名需要加上小括号表示调用。6.2.3类成员classPerson{public$name='未命名'; //定义成员属性

publicfunctionspeak() //成员方法

{echo'Thepersonisspeaking.';}}$person=newPerson();//实例化Person类echo$person->name;//获取成员属性的默认值,输出结果:未命名$person->name='张三';//修改成员属性的默认值echo$person->name;//输出结果:张三$person->speak();//输出结果:Thepersonisspeaking.案例:使用类成员6.2.4对象的浅复制

先定一个小目标!掌握对象的浅复制,能够说出浅复制的概念,能够编写代码完成对象浅复制6.2.4对象的浅复制浅复制(ShallowCopy):实现同一个标识符的复制,这个标识符指向同一个对象的内容,与引用赋值的效果类似。classPerson{public$age=1;}$object1=newPerson();$object2=$object1;$object1->age=10;var_dump($object1->age);//输出结果:int(10)var_dump($object2->age);//输出结果:int(10)案例:对象的浅复制6.2.5对象的克隆

先定一个小目标!掌握对象的克隆,能够利用clone关键字实现对象的克隆6.2.5对象的克隆什么是克隆对象:想要获取多个相同的对象,并且其中一个对象的成员发生改变不影响其他对象的成员,使用clone关键字来实现。$object2=clone$object1;基本语法6.2.5对象的克隆通过克隆对象修改其中一个对象的成员时,不影响另一个成员。classPerson{public$age=1;}$object1=newPerson();$object2=clone$object1;$object1->age=10;var_dump($object1->age);//输出结果:int(10)var_dump($object2->age);//输出结果:int(1)案例:克隆对象6.2.5对象的克隆classPerson{publicfunction__clone(){

echo'__clone()方法被执行了';}}代码示例魔术方法克隆对象时,若要完成对新对象的某些属性重新初始化的操作,可以在PHP提供的魔术方法__clone()中进行相关设置。6.2.5对象的克隆魔术方法魔术方法不需要手动调用,它会在某一刻自动执行,常见的魔术方法:魔术方法描述__get()当调用一个未定义或无权访问的属性时自动调用此方法__set()给一个未定义或无权访问的属性赋值时自动调用此方法__isset()当在一个未定义或无权访问的属性上执行isset()操作时调用此方法__unset()当在一个未定义或无权访问的属性上执行unset()操作时调用此方法__construct()构造方法,当一个对象被创建时调用此方法__destruct()PHP将在对象被销毁前(即从内存中清除前)调用此方法(1/2)6.2.5对象的克隆魔术方法常见的魔术方法:魔术方法描述__tostring()用于一个类被当成字符串时应怎样回应__invoke()以调用函数的方式调用一个对象时会被自动调用__sleep()可用于清理对象,在serialize()序列化前执行__wakeup()用于预先准备对象需要的资源,在unserialize()反序列化前执行__call()在对象中调用一个不可访问方法时会被调用__callstatic()静态上下文中调用一个不可访问方法时会被调用,该方法需要声明为static静态方法(2/2)6.2.6访问控制修饰符

先定一个小目标!掌握访问控制修饰符的使用,能够说出public、protected、private三者的作用和区别6.2.6访问控制修饰符访问控制修饰符:规定类中的成员属性和成员方法是否允许被外界访问。访问控制修饰符的作用范围:“√”表示允许访问,“×”表示不允许访问。访问控制修饰符同一个类内子类类外public√√√protected√√×private√××6.2.6访问控制修饰符classUser{

public$name='张三'; //姓名

protected$phone='400-123456'; //电话

private$money='5000'; //存款}$user=newUser();echo$user->name; //输出结果:张三echo$user->phone; //报错echo$user->money; //报错案例:访问控制修饰符6.2.7类中的$this

先定一个小目标!掌握类中的$this的使用,能够说出$this的作用,能够利用$this访问当前对象的成员$this的使用:在类未被实例化时,通过$this调用成员属性和成员方法。6.2.7类中的$this类被实例化对象名->成员属性;对象名->成员方法();类未被实例化$this->成员属性;$this->成员方法();6.2.7类中的$thisclassUser{public$name='张三'; //姓名

protected$phone='400-123456'; //电话

private$money='5000'; //存款

publicfunctiongetAll(){var_dump($this);echo$this->name,'';echo$this->phone,'';echo$this->money,'';}}$user=newUser();$user->getAll(); //输出结果:张三400-1234565000案例:$this的使用使用var_dump()打印$this的结果:$this代表$user对象。6.2.7类中的$thisobject(User)#1(3){['name']=>char('张三')['phone']=>char('400-123456')['money']=>char('5000')}注意:$this只能在类定义的方法中使用,不能在类外部使用。6.2.8构造方法

先定一个小目标!掌握构造方法的使用,能够利用构造方法在创建对象时完成初始化操作什么是构造方法:用于在创建对象时,完成初始化功能。每个类都有一个构造方法,如果在类中没有显式地声明它,PHP会自动生成一个没有参数且没有任何操作的默认构造方法。当在类中声明构造方法时,默认构造方法将不存在。6.2.8构造方法访问控制修饰符function__construct(参数列表){ //初始化操作}语法格式6.2.8构造方法classUser{public$name;

publicfunction__construct($name='xxx'){$this->name=$name;}}$obj1=newUser();$obj2=newUser('Tom');echo$obj1->name;//输出结果:xxxecho$obj2->name;//输出结果:Tom案例:构造方法的使用6.2.9析构方法

先定一个小目标!掌握析构方法的使用,能够利用析构方法在对象被释放前完成清理操作什么是析构方法:在对象被销毁之前自动调用,完成一些功能或操作的执行。例如,关闭文件、释放结果集等。析构方法一般情况下不需要手动调用,在使用unset()释放对象或者PHP脚本执行结束自动释放对象时,析构方法将会被自动调用。6.2.9析构方法访问控制修饰符function__destruct(){ //清理操作}语法格式6.2.9析构方法classUser{publicfunction__destruct(){echo'正在执行析构方法';}}$obj=newUser();unset($obj);//输出结果:正在执行析构方法案例:析构方法的使用类常量和静态成员6.36.3.1类常量

先定一个小目标!掌握类常量的使用,能够在类中定义类常量,能够对类常量进行访问6.3.1类常量什么是类常量:在类内使用const关键字定义类常量,定义类常量后,类常量的值不变,可以被所有对象共有。类常量名的命名规则:通常以大写字母表示类常量名。访问类常量:通过“类名::常量名称”的方式访问,“::”称为范围解析操作符,简称双冒号。const

类常量名='常量值';语法格式6.3.1类常量classStudent{

constSCHOOL='某学院'; //定义类常量}echoStudent::SCHOOL; //访问类常量案例:类常量的使用6.3.2静态成员

先定一个小目标!掌握静态成员的使用,能够在类中定义静态成员,能够对静态成员进行访问6.3.2静态成员什么是静态成员:让类中的某些成员只保存一份,并且可以被所有实例的对象所共享,使用static关键字修饰,表示属于类的成员,可以通过类名直接访问,不需要实例化对象。静态成员分类:静态属性和静态方法。//静态成员的声明publicstatic属性名; //声明静态属性publicstatic方法名(){} //声明静态方法//静态成员的访问类名::静态成员语法格式6.3.2静态成员classStudent{publicstatic$msg;publicstaticfunctionshow(){echoself::$msg; //类内访问静态属性

}}Student::$msg='信息'; //类外访问静态属性案例:静态成员的使用注意:在类内调用静态成员使用static或self关键字,在类外使用类名调用。面向对象三大特性6.46.4面向对象三大特性

先定一个小目标!熟悉面向对象三大特性,能够说出封装、继承、多态这三大特征的具体含义6.4面向对象三大特性封装面向对象面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,形成对外界的隐蔽,同时对外提供可以操作的接口。继承面向对象中实现代码复用的重要特性,本质是子类通过继承直接使用父类的操作,使用extends关键字实现,子类被称为派生类,父类被称为基类。多态指相同操作或函数可作用于多种类型的对象上并获取不同的结果,即不同的对象,所表现的行为是不一样的。继承6.56.5.1继承的实现

先定一个小目标!掌握继承的实现,能够利用extends关键字实现子类继承父类6.5.1继承的实现什么是继承:描述事物之间的所属关系,使多种事物之间形成一种关系体系。类的继承:在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法,使用extends关键字实现继承。class子类名extends

父类名{//类体}语法格式6.5.1继承的实现//定义Man类,继承People类classManextendsPeople{publicfunction__construct($name){$this->mame=$name;}}$man=newMan('Tom');$man->say();//输出结果:Tomisspeaking案例:继承的使用//定义People类classPeople{public$name;publicfunctionsay(){echo$this->name.'isspeaking';}}6.5.2有限继承

先定一个小目标!掌握有限继承,能够利用访问控制修饰符实现有限继承6.5.2有限继承什么是有限继承:在子类继承父类时,受访问修饰控制限定符的限制,并非继承父类所有的内容,而是继承并使用父类的部分内容。父类公有成员受保护成员私有属性私有方法子类公有成员受保护成员私有属性继承6.5.2有限继承有限继承的内容:访问控制修饰符属性方法public√√protected√√private√×6.5.2有限继承classPeople{public$name='Tom'; //姓名

protected$age='20'; //电话

private$money='5000'; //存款

publicfunctionshowName() //公有方法

{echo$this->name;}protectedfunctionshowAge() //受保护方法

{echo$this->age;}privatefunctionshowMoney() //私有方法

{echo$this->money;}}案例:有限继承的使用STEP01定义People类。6.5.2有限继承classManextendsPeople{publicfunctiongetProtected(){echo$this->showAge();}publicfunctiongetPrivate(){echo$this->money;$this->showMoney();}}案例:有限继承的使用STEP02定义Man类继承People类。6.5.2有限继承$man=newMan();var_dump($man);$man->showName; //输出结果:Tom$man->getProtected(); //输出结果:20$man->getPrivate();案例:有限继承的使用STEP03实例化Man类,查看输出结果。6.5.2有限继承object(Man)#1(3){ ["name"]=>string(3)"Tom" ["age":protected]=>string(2)"20" ["money":"People":private]=>string(4)"5000"}案例:有限继承的使用STEP04打印Man类对象的输出结果。6.5.2有限继承Notic:Undefinedproperty:Man::$money...Faulterror:UncaughtError:Calltoprivatemethod

People::showMoney()fromcontext'Man'...案例:有限继承的使用STEP04Man类对象调用getPrivate()方法程序报错。6.5.3重写

先定一个小目标!掌握重写的实现,能够在子类中重写父类的同名方法什么是重写:在子类中定义父类的同名成员,子类可以重写父类的任意类成员。重写父类属性和父类方法:重写父类属性时,直接覆盖,父类的属性将不存在。重写父类方法时,该方法在子类和父类中同时存在。注意:重写方法时,首先要保证参数数量必须一致;其次子类中的方法的访问级别应等于或弱于父类中被重写的方法的访问级别。6.5.3重写6.5.3重写classPeople{public$name='People';publicfunctionshow(){echo__CLASS__;}publicfunctionsay(){echo__CLASS__.'say';}}案例:重写的使用classManextendsPeople{public$name='Man';publicfunctionshow(){echo__CLASS__;}protectedfunctionsay(){echo__CLASS__.'say';}}$man=newMan();var_dump($man);//object(Man)#1(1){["name"]=>string(3)"Man"}$man->show();//Man$man->say(); //Faulterror:AccessleveltoMan::say()must...6.5.3重写parent关键字子类重写父类的方法后,若想继续使用父类的方法,需要使用parent关键字调用。parent::父类方法();语法格式6.5.3重写<?phpclassManextendsPeople{publicfunctionshow(){parent::show();}}案例:访问父类方法示例代码6.5.4静态延迟绑定

先定一个小目标!掌握静态延迟绑定,能够说出什么是静态延迟绑定,能够利用static关键字实现静态延迟绑定6.5.4静态延迟绑定静态延迟绑定使用场景:类可以自下往上调用父类方法,如果需要在父类中根据不同的子类调用子类的方法,那么就需要延迟静态绑定。什么是静态延迟绑定:在访问静态成员时,访问实际运行的类的静态成员,而不是访问原本定义的类的静态成员。静态延迟绑定使用static关键字来实现,只适用于对静态属性和静态方法进行延迟绑定。6.5.4静态延迟绑定classPeople{publicstatic$name='People';publicstaticfunctionshowName(){echoself::$name;//静态绑定

echostatic::$name;//静态延迟绑定

}}案例:静态延迟绑定示例代码classManextendsPeople{publicstatic$name='Man';}People::showName(); //PeoplePeopleMan::showName(); //PeopleMan6.5.5final最终类

先定一个小目标!掌握final最终类,能够说出什么是最终类,能够利用final关键字将类声明为最终类6.5.5final最终类finalclass类名

//最终类{publicfinalfunction方法名(){} //最终方法}语法格式什么是最终类:在继承的过程中保证某些类或方法不被改变,使用final关键字将类定义成最终类,使用final修饰的类和成员方法不能被修改。6.5.5final最终类classPerson{protectedfinalfunctionshow(){//final方法不能被子类重写

}}finalclassStudentextendsPerson{//final类不能被继承,只能被实例化}案例:final类的定义和使用示例代码6.5.6抽象类

先定一个小目标!掌握抽象类,能够说出什么是抽象类,能够利用abstract关键字声明抽象类和抽象方法6.5.6抽象类什么是抽象类:是一种特殊的类,用于定义某种行为,但其具体的实现需要子类来完成,使用abstract关键字进行修饰。运动类(抽象类)定义运动行为基础跑长距离跑减速跑6.5.6抽象类abstractclass类名

//定义抽象类{publicabstractfunction方法名(); //定义抽象方法}语法格式6.5.6抽象类使用abstract修饰抽象类或方法时注意事项:抽象方法是只有方法声明而没有方法体的特殊方法。含有抽象方法的类必须被定于成抽象类。抽象类中可以有非抽象方法、成员属性和常量。抽象类不能被实例化,只能被继承。子类实现抽象类中的抽象方法时,访问控制修饰符必须与抽象类中的一致或者更宽松。子类继承抽象类时必须实现抽象方法,否则也必须定义成抽象类,由下一个继承类来实现。6.5.6抽象类abstractclassHuman{protectedabstractfunctioneat();}abstractclassManextendsHuman{}classBoyextendsMan{publicfunctioneat(){echo'eat';}}案例:抽象类和抽象方法的使用示例代码Trait代码复用6.66.6.1什么是Trait

先定一个小目标!熟悉什么是Trait,能够说出Trait的作用和基本语法6.6.1什么是Trait为解决单继承提供的一种代码复用机制,让面向对象变得更加纯粹。Trait结构类似于类,可以定义属性和方法,不能定义常量。trait名字{//定义属性和方法}语法格式6.6.1什么是Trait在类中引入Trait:class类名{

usetrait名字;

usetrait名字1,trait名字2;//一个类中可以引入多个Trait,使用逗号分隔}语法格式6.6.2Trait同名

先定一个小目标!掌握Trait同名情况的处理,能够在同名的时候进行替代或设置别名6.6.2Trait同名STEP03在类中引入同名Trait:当两个Trait中含有同名的成员(属性或方法)时,可以进行替代(insteadof关键字)或设置别名(as关键字)完成调用。6.6.2Trait同名STEP03traitt1{publicfunctioneat(){echo't1,eat';}}案例:Trait同名的使用STEP01定义名称为t1的Trait。6.6.2Trait同名STEP03traitt2{publicfunctioneat(){echo't2,eat';}}案例:Trait同名的使用STEP02定义名称为t2的Trait。6.6.2Trait同名STEP03classPerson{uset1,t2{t1::eatinsteadoft2;t2::eatasshow;}}案例:Trait同名的使用STEP03定义Person类调用t1、t2Trait。6.6.2Trait同名STEP03$person=newPerson();$person->eat(); //输出结果:t1,eat$person->show(); //输出结果:t2,eat案例:Trait同名的使用STEP04实例化Person类,查看运行结果。6.6.3Trait控制权

先定一个小目标!掌握Trait控制权的修改,能够根据需求来修改Trait中对应方法的控制权6.6.3Trait控制权修改Trait控制权:在类中引入Trait时,根据需求来修改Trait中对应方法的控制权,修改方法的控制权后只对当前引入Trait的类有效。traittrait名字{protectedfunction方法名(){}}class类名{usetrait名字{

方法名as访问修饰限定符;}}语法格式6.6.3Trait控制权traitt1{publicfunctionsleep(){echo'sleep';}}案例:为Trait方法修改控制权并设置别名STEP01定义名称为t1的Trait。6.6.3Trait控制权classPerson{

uset1{sleepasprivates;}}$person=newPerson();$person->s(); //Fatalerror:UncaughtError:Calltoprivate...$person->sleep(); //sleepSTEP02引用Trait,修改控制权并设置别名。案例:为Trait方法修改控制权并设置别名6.6.4Trait优先级

先定一个小目标!掌握Trait优先级,能够说出当Trait出现同名成员时,调用会采用什么优先级6.6.4Trait优先级当类之间有继承关系并引入了Trait,Trait在引入过程中可能与类本身或者父类拥有同名成员。当出现同名属性时,必须保证同名同值,否则程序报错。存在同名方法时调用的优先级:子类>Trait>父类。6.6.4Trait优先级traitEat{publicfunctioneat(){echo'Eat::eat';}}STEP01定义Trait。案例:子类、Trait和父类中存在同名方法时调用的优先级6.6.4Trait优先级STEP02定义Human类。案例:子类、Trait和父类中存在同名方法时调用的优先级classHuman{publicfunctioneat(){echo'Human::eat';}}6.6.4Trait优先级classManextendsHuman{

useEat;publicfunctioneat(){Echo'Man::eat';}}$man=newMan();$man->eat(); //Man::eatSTEP03Man类继承Human类并用Trait。案例:子类、Trait和父类中存在同名方法时调用的优先级接口6.76.7.1什么是接口

先定一个小目标!熟悉什么是接口,能够说出接口的作用,能够编写代码完成接口的定义6.7.1什么是接口接口:用于指定某个类必须实现的功能,用来规范一些共性类必须实现的方法,通过interface关键字来定义,接口中所有的方法只能是公有的,不能使用final关键字来修饰。语法格式//定义接口interface

接口名{publicfunction方法名();}//实现接口class类名implements

接口名{//类体}6.7.1什么是接口接口成员:接口常量和接口方法。接口方法:抽象方法且没有方法体,在定义接口中的抽象方法时,由于所有的方法都是抽象的,因此声明时省略了abstract关键字。接口常量:在实现接口的类中可以访问,但不能在类中定义同名常量。6.7.1什么是接口案例:接口的定义和实现interfaceHuman{constNAME=''; //接口常量

publicfunctioneat();//接口方法}classManimplementsHuman{publicfunctioneat()//实现接口方法

{}}6.7.2接口继承

先定一个小目标!掌握接口的继承,能够利用extends关键字实现接口的单继承或多继承6.7.2接口继承使用extends关键字实现,多继承用逗号把继承的接口隔开:语法格式interfaceA{}interfaceB{}//接口继承interfaceCextendsA{}//接口多继承interfaceDextendsA,B{}6.7.2接口继承interfaceHuman{publicfunctionwalk();publicfunctiontalk();}interfaceAnimal{publicfunctioneat();publicfunctiondrink();}案例:接口继承的使用classMonkeyinplementsHuman,Animal{publicfunctionwalk(){};publicfunctiontalk(){};publicfunctioneat(){};publicfunctiondrink(){};}对象遍历6.86.8.1如何遍历对象

先定一个小目标!熟悉如何遍历对象,能够编写代码完成对象的遍历操作对象遍历:将对象中的所有属性以键值对的形式取出并进行访问,使用foreach语句对对象中的属性进行取出解析。6.8.1如何遍历对象语法格式foreach(对象遍历as属性名变量=>属性值变量){ //属性名变量代表取出的每个属性的名字 //属性值变量代表取出的每个属性的值}6.8.1如何遍历对象classMan{public$name='Tom';protected$age=30;private$money=1000;}$man=newMan();//输出结果:name:Tomforeach($manas$key=>$val){echo$key.':'.$val.'<br/>';}案例:遍历对象6.8.2Iterator迭代器

先定一个小目标!掌握Iterator迭代器,能够说出Iterator迭代器的作用,能够编写代码完成迭代器操作6.8.2Iterator迭代器Iterator迭代器:能够修改foreach内部运行机制的接口,它内置了5个抽象方法,实现迭代器类必须实现5个抽象方法,实现迭代器的类的对象在进行foreach遍历时,不会按照foreach原有的机制处理,而是根据迭代器的抽象方法运行。6.8.2Iterator迭代器Iterator迭代器内置的5个抽象方法:Iterator::cu

温馨提示

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

评论

0/150

提交评论