第14章PHP自学资料02 PHP与对象_第1页
第14章PHP自学资料02 PHP与对象_第2页
第14章PHP自学资料02 PHP与对象_第3页
第14章PHP自学资料02 PHP与对象_第4页
第14章PHP自学资料02 PHP与对象_第5页
已阅读5页,还剩9页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

PHP与对象,本讲大纲:,1、类的定义2、成员方法3、类的实例化4、成员变量5、类常量6、构造方法和析构方法7、继承和多态的实现8、“$this-”和“:”的使用9、数据隐藏10、静态变量(方法),支持网站:,类的定义,和很多面向对象的语言一样,PHP也是通过class关键字加类名来定义类的。类的格式如下:上述两个大括号中间的部分是类的全部内容,如上述SportObject就是一个最简单的类。SportObject类仅有一个类的骨架,什么功能都没有实现,但这并不影响它的存在。,成员方法,类中的函数被称为成员方法。函数和成员方法唯一的区别就是,函数实现的是某个独立的功能,而成员方法是实现类中的一个行为,是类的一部分。下面就创建一个运动类,并添加成员方法。将类命名为SportObject类,并添加打篮球的成员方法beatBasketball()。代码如下:该方法的作用是输出申请打篮球人的基本信息,包括姓名、身高和年龄。这些信息是通过方法的参数传进来的。,类的方法已经添加,接下来就使用方法,但使用方法不像使用函数那么简单。首先要对类进行实例化,实例化是通过关键字new来声明一个对象。然后使用如下格式来调用要使用的方法:“对象名-成员方法”,类的实例化,类中的变量,也称为成员变量(也有称为属性或字段的)。成员变量用来保存信息数据,或与成员方法进行交互来实现某项功能。定义成员变量的格式为:关键字成员变量名。访问成员变量和访问成员方法是一样的。只要把成员方法换成成员变量即可,格式为:对象名-成员变量,成员变量,既然有变量,当然也会有常量。常量就是不会改变的量,是一个恒值。圆周率是众所周知的一个常量。定义常量使用关键字const,如:constPI=3.14159;常量的输出和变量的输出是不一样的。常量不需要实例化对象,直接由“类名+常量名”调用即可。常量输出的格式为:类名:常量名,类常量,1构造方法当一个类实例化一个对象时,可能会随着对象初始化一些成员变量。构造方法的作用就是在生成对象时执行一些操作,也就是初始对象,该方法可以没有参数,也可以有多个参数。构造方法的格式如下:void_construct(mixedargs,)2析构方法析构方法的作用和构造方法正好相反,是对象被销毁时被调用的,作用是释放内存。析构方法的格式为:void_destruct(void),构造方法和析构方法,1继承子类继承父类的所有成员变量和方法,包括构造函数,当子类被创建时,PHP会先在子类中查找构造方法。如果子类有自己的构造方法,PHP会先调用子类中的方法。当子类中没有时,PHP则去调用父类中的构造方法,这就是继承。例如,在14.1节中通过图片展示了一个运动类,在这个运动类中包含很多个方法,代表不同的体育项目,各种体育项目的方法中有公共的属性。例如,姓名、性别、年龄但还会有许多不同之处,例如,篮球对身高的要求、举重对体重的要求如果都由一个SportObject类来生成各个对象,除了那些公共属性外,其他属性和方法则需自己手动来写,工作效率得不到提高。这时,可以使用面向对象中的继承来解决这个难题。下面来看如何通过PHP中的继承来解决上述问题。继承是通过关键字extends来声明的,继承的格式如下:classsubClassextendssuperClass,继承和多态的实现,2多态多态好比有一个成员方法让大家去游泳,这个时候有的人带游泳圈,还有人拿浮板,还有人什么也不带。虽是同一种方法,却产生了不同的形态,就是多态。多态存在两种形式:覆盖和重载。(1)所谓覆盖就是在子类中重写父类的方法,而在两个子类的对象中虽然调用的是父类中相同的方法,但返回的结果是不同的。例如,在“继承”实例中,在两个子类中都调用了父类中的方法showMe(),但是返回的结果却不同。(2)重载,是类的多态的另一种实现。函数重载指一个标识符被用作多个函数名,且能够通过函数的参数个数或参数类型将这些同名的函数区分开来,调用不发生混淆。其好处是可实现代码重用,不用为了对不同的参数类型或参数个数而写多个函数。多个函数使用同一个名字,但参数个数、参数数据类型不同。调用时,虽然方法名称相同,但根据参数个数或者参数数据类型不同自动调用对应的函数。,继承和多态的实现,下面看一个重载的简单实例,根据传递的参数个数不同,调用不同的方法,返回不同的值。;/输出方法名echo参数存在个数:.count($num).;/输出参数个数if(count($num)=1)/根据参数个数调用不同的方法echo$this-list1($a);if(count($num)=2)/根据参数个数调用不同的方法echo$this-list2($a,$b);publicfunctionlist1($a)/定义方法return这是list1函数;publicfunctionlist2($a,$b)/定义方法return这是list2函数;$a=newC;/类的实例化$a-listshow(1,2);/调用方法,传递参数?,继承和多态的实现,1$this-在14.2.3节“类的实例化”中,对如何调用成员方法有了基本的了解,那就是用对象名加方法名,格式为“对象名-方法名”。但在定义类时(如SportObject类),根本无法得知对象的名称是什么。这时如果想调用类中的方法,就要用伪变量$this-。$this的意思就是本身,所以$this-只可以在类的内部使用。2操作符“:”相比伪变量$this只能在类的内部使用,操作符“:”更为强大。操作符“:”可以在没有声明任何实例的情况下访问类中的成员方法或成员变量。使用“:”操作符的通用格式为:关键字:变量名/常量名/方法名这里的关键字分为以下3种情况。parent关键字:可以调用父类中的成员变量、成员方法和常量。self关键字:可以调用当前类中的静态成员和常量。类名:可以调用本类中的变量、常量和方法。,“$this-”和“:”的使用,数据隐藏,1public(公共成员)顾名思义,就是可以公开的、没有必要隐藏的数据信息。可以在程序中的任何位置(类内、类外)被其他的类和对象调用。子类可以继承和使用父类中所有的公共成员。在本章的前半部分,所有的变量都被声明为public,而所有的方法在默认状态下也是public。所以对变量和方法的调用显得十分混乱。为了解决这个问题,就需要使用第二个关键字private。2private(私有成员)被private关键字修饰的变量和方法,只能在所属类的内部被调用和修改,不可以在类外被访问。在子类中也不可以。3protected(保护成员)private关键字可以将数据完全隐藏起来,除了在本类外,其他地方都不可以调用,子类也不可以。对于有些变量希望子类能够调用,但对另外的类来说,还要做到封装。这时,就可以使用protected。被protected修饰的类成员,可以在本类和子类中被调用,其他地方则不可以被调用。,不是所有的变量(方法)都要通过创建对象来调用。可以通过给变量(方法)加上static关键字来直接调用。调用静态成员的格式为:关键字:静态成员关键字可以是:self,在类内部调用静态成员时所

温馨提示

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

评论

0/150

提交评论