轻松学PHP之面向对象程序设计

上传人:平*** 文档编号:33574642 上传时间:2018-02-15 格式:PPTX 页数:54 大小:1.35MB
返回 下载 相关 举报
轻松学PHP之面向对象程序设计_第1页
第1页 / 共54页
轻松学PHP之面向对象程序设计_第2页
第2页 / 共54页
轻松学PHP之面向对象程序设计_第3页
第3页 / 共54页
轻松学PHP之面向对象程序设计_第4页
第4页 / 共54页
轻松学PHP之面向对象程序设计_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《轻松学PHP之面向对象程序设计》由会员分享,可在线阅读,更多相关《轻松学PHP之面向对象程序设计(54页珍藏版)》请在金锄头文库上搜索。

1、第 6章 面向对象程序设计+ 自 PHP 5发布以来,最大的特性就是引入了面向对象的全部机制。数组和对象都是 PHP复合数据类型中的一种。前面我们已经学习过了数组。我们可以感受到 PHP的数组是非常强大的。而对象不仅可以存储任意类型的数据,而且可以储存函数。并且对象还可以封装保护类中的成员不受到非法操作。可以通过继承对类进行扩展。本章的核心就是让读者理解面向对象程序设计的思想,达到灵活应用面向对象方法的目的。6.1 面向对象概述+ 面向对象程序设计是一种计算机编程架构,它一直是程序开发中的热门话题。使用面向对象思想设计的程序代码更加简洁,更加易于维护,并且有更强的课重用性。这些特性就达到了软件

2、工程的三个目标:重用性、灵活性和扩展性。并且面向对象的思想相对面向过程的思想更加符合人类看待事物的一般规律。 PHP虽不是一个真正的面向对象的编程语言,但是面向对象的思想我们是完全可以借鉴,并且大部分都可以很好地实现,这在大型项目的设计中是很有优势的。6.1.2 面向对象程序设计+ 面向对象程序设计就将上一小节中的思想融入到程序设计中。我们需要核心掌握的就是如何使用面向对象模式的思想去设计程序。就比如说一个项目需要多少个类、应该定义什么样的类、每个类在什么时候创建对象、哪里能用到对象、对象和对象之间的关系以及对象和对象之间如何传递信息等这些内容。+ 开发一个面向对象的程序大都是把每个独立的功能

3、模块抽象成类并实例化成对象,再由多个对象组成这个系统。这些对象之间都能够接受信息,处理数据和向其他对象发送信息等相互作用,就构成了面向对象的程序。6.2 创建一个类+ 初步使用面向对象程序设计,我们要掌握的就是使用面向对象的思想抽象出一个类,这是一种思想的转化,难点也就是在这里。而这些思想的体现在程序中就是代码。在这里,要写出代码,掌握语法,这些都是很简单的,而能正确地抽象出一个类才是我们的希望读者可以完成的。我们就先以简单的语法开始逐渐深入地讲解他们。6.2.1 创建类+ PHP类由三部分构成:第一部分是表示类的关键字 class;第二部分是表示类名的 PHP合法标示符;第三部分是使用花括号

4、括起来的一组代码。整个类的语法如图所示。6.2.2 实例化对象+ PHP中实例化一个对象类似赋值操作。它使用new操作符加类名和参数列表来实例化一个对象,然后赋值给一个变量。语法如图所示。+ (1)创建一个 ren类并且实例化三个对象。6.3 成员属性+ 在前面的章节中我们声明了类并且也实例化了对象,但是我们很清楚的知道那些类及其对象是没有任何意义的,因为他们不会做任何事情,也没有任何的特性。学习就是要循序渐进的,类就是要慢慢补充的。成员属性就是类的核心之一。下面我们来开始学习他们。6.3.1 成员属性+ 我们知道人都有一定的共有属性,例如姓名、年龄、生日、户籍地等等这些都是一个人常常必备的一

5、些性质,而它们体现在类中就是类的成员属性。定义 成员属性的语法如图所示。6.3.1 成员属性+ 在早前的 PHP版本中使用如下这种写法:+ var $name+ 这种写法的含义和用法与+ public $name+ 是完全一样的,在 PHP 5中改为使用 public修饰。但是为了兼容以前的程序,这种写法依然可以使用,但是并不是我们推荐的。+ (1)定义一个含有姓名,性别,年龄,生日,户籍属性的 ren类,并且实例化若干个对象。+ (2)定义一个 ren类,在示例 6-2中 ren类的基础上去掉一个属性,并实例化若干个对象。6.3.2 访问成员属性+ 在 PHP中我们使用 “-”来访问对象的成

6、员属性,它的语法如图 6.6所示。+ (1)创建一个 ren类的对象 $xiaoyang,并且用 “-”操作符访问它的属性并执行赋值操作,并在最后访问输出这些属性。+ (2)实例化 ren类的两个对象,并且给其中一个对象的xingming属性赋值。然后输出两个对象对应的 xingming属性的值。6.4 成员方法+ 前面的章节中我们已经了解了成员属性,已经学会了访问成员属性的语法。我们可以清楚的体验出,光有成员属性的类是非常单薄和没有多大用处的。这里我们就要再给类添加一种成员 成员方法。成员方法可以操作类里面的成员属性,也可以独立完成一些操作,它为类添加了强大的功能,下面我们就来学习它。6.4

7、.1 成员方法+ 成员方法也就是函数。它可以完成一些我们需要的操作。成员方法的定义很简单,只要在函数前面加上访问控制修饰符关键字即可,语法如图所示。+ (1)给 ren类定一个成员方法 say。6.4.2 访问成员方法+ 成员方法的访问与成员变量的访问方法是相同的都是使用 “-”操作符来完成的,语法如图所示。+ (1)访问 ren类中的成员方法 say。6.4.6 $THIS关键字+ 在定义了成员方法后,我们常常会用到的一个问题是怎么使用类的其他成员,比如使用成员属性,调用成员方法。要实现这种操作,我们只能使用 $this,它的语法如图所示。+ 它会把查找范围缩小在一个类以内,也就是说使用了

8、$this语法后,程序只会在类内寻找这个同名成员,而不会在类范围外的地方去查找。6.4.6 $THIS关键字+ (1)使用 $this在成员方法中访问成员属性。+ (2)在一个成员方法中使用 $this访问另一个成员方法。6.4.6 构造方法+ 在类的方法中有一种特殊的方法就是构造方法。 PHP 5 允行开发者在一个类中定义一个方法作为构造函数。我们先来看它的语法,如图所示。+ 由于构造方法是由系统自动调用的,我们不可以主动调用,因此不需要加访问控制关键字。这个读者一定要注意。构造函数会在每次创建新对象时被调用,所以非常适合在使用对象之前做一些初始化工作。如果我们不显式地创建构造方法,在类也是

9、有默认的构造方法的。6.4.6 构造方法+ (1)在类中定义一个构造方法用来对对象进行初始化。+ (2)给类的构造方法定义默认参数。6.4.7 析构方法+ 与构造函数的名称类似,一个类的析构函数名称必须是 _destruct()。析构函数不能带有任何参数。同样的,析构函数也不需要访问控制关键字。它的语法如图所示。+ 析构函数允许在销毁一个类之前执行一些操作或完成一些功能。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存中被销毁前自动调用析构函数。下面我们来看一个示例。6.4.7 析构方法+ (1)为类定义一个析构方法,在对象不再被使用后,系统会自动调用析构函

10、数并输出函数体中的内容。+ (2)实例化一个类的对象后使用 unset函数销毁对象名。6.5 封装性+ 封装性是面向对象的三大特性之一,封装的最主要作用就是把数据封起来,不让外界可以随意访问,修改。这样就可以使得数据更加的安全可靠。封装性还是比较好理解和学习的,下面我们就来学习他们。6.5.1 封装性的含义+ PHP的封装以有两个方面的含义。我们先来看第一个含义。如图所示。+ 我们可以看到我们使用的类的成员属性和成员函数都是被集中放置在类里面的,这就是封装性的一个方面。从结构角度上体现出来的。6.5.2 访问控制关键字 PUBLIC、PROTECTED、 PRIVATE+ 另一种体现就是在数据

11、上的,我们由生活中的案例就很容易想到,比如我们的个人隐私,手机号码,生日,居住地址之类的数据并不想随意就让别人得到或者修改。有些就是我们不愿公开的。+ 我们在网上注册一些账号的时候也可以体现出来,就比如生日和联系方式可以设置为自己的好友可见而非好友不可见等等状态。要实现这些,我们知道在学习面向对象程序设计以前是做不到的,所有变量或者函数都是可以被随意操作。这在类中可以使用访问关键字来约束它们。访问控制关键字有如下三种:+ public 由它修饰的成员被称为公共成员,可以在类内部和外部被访问。+ protected 由它修饰的成员被称为保护成员,可以在类内部被访问。+ private 由它修饰的

12、成员被称为私有成员,只可以在类内部被访问。+ 我们前面一直使用的是 public关键字修饰成员的,由它修饰的成员可以在类内部和外部访问。由 private和 protected修饰的成员不可以被外部成员访问。6.5.2 访问控制关键字 PUBLIC、PROTECTED、 PRIVATE+ (1)演示 private和 protected修饰的成员不可以在类外被访问。+ (2)使用接口函数访问类的私有成员属性。+ (3)在接口函数中加入判断,防止非法访问私有属性。6.6 继承性+ 继承性是面向对象编程的三大特性之一,我们知道人类有遗传,有继承财产这些的说法。类中的继承性就是这些特性的抽象,正是由

13、于继承性而增强了面向对象的可扩展性,下面我们就来学习这个重要的特性。6.6.1 继承概述+ PHP 的对象模型也使用了继承。继承将会影响到类与类,对象与对象之间的关系。继承对于功能的设计和抽象是非常有用的,而且对于类似的对象增加新功能就无须重新再写这些公用的功能。继承使用extends关键字进行的,语法如图所示。6.6.2 继承 PUBLIC成员+ 我们知道类的成员有不同的访问权限,是由访问控制关键字来控制的。在 PHP中所有的 public成员均可以被继承。+ (1)演示儿子类继承父亲的高个子、高智商的属性,继承了父亲绝活的函数。6.6.3 继承 PROTECTED成员+ 很多情况下有些类继

14、承的属性是不想被在类外部访问的,及比如儿子继承了父亲 100万的存款,而父亲不期望外人知道孩子的存款。就可以把存款成员声明为一个保护成员也就使用protected修饰的成员。保护成员的性质就是不可以在类外部被访问到,但是可以在子类内部访问到。也是就说我们可以在子类设置一个接口函数来访问保护成员。+ (1)在类外部不可以访问到类的 protected成员,而可以在类内部访问到。6.6.4 PRIVATE成员+ 使用 private修饰的成员被称为私有成员。父类中的私有成员不会被子类继承,因此不会被子类访问到。+ (1)演示父类中的私有成员不会被子类继承和访问。6.6.5 继承的扩展+ 所谓继承的

15、扩展,两个方面的扩展,一方面就是成员的扩展,一方面就是成员函数的覆盖。这个还是比较容易理解的。成员的扩展就好似在继承了父类的属性后,自己还可以有自己独特的成员属性和方法。而如果成员方法如果和父类继承下来的成员方法同名,那么就会子类中的方法就会覆盖了从父类继承的方法。这就像把父亲那里学来的手艺加了改进一样。+ (1)演示在子类中可以有新的属性和方法。6.7 抽象类和接口+ 前面我们已经学习了继承,子类可以继承父类的成员方法和成员属性,也可以修改继承来的成员方法。而抽象类就是在类中定义了一个父类不曾实现的方法,而规定子类必须实现。这也是一种很有用的方法,只要看到父类中的方法名,就可以不必看子类而直

16、接调用子类中的方法了。6.7.1 抽象类和抽象方法+ 在前面我们学过类可以被继承,这里就一个吧继承做到极致的类,那就是抽象类。抽象类和方法使用 abstract修饰,语法如图所示。+ 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象类。+ 抽象类不能直接被实例化,必须先继承该抽象类,然后再实例化子类。继承一个抽象类的时候,子类必须实现抽象类中的所有抽象方法;另外,这些方法的可访问性必须和抽象类中一样(或者更为宽松)。如抽象类中某个抽象方法被声明为 protected,那么子类中实现的方法就应该声明为 protected或者public,而不能定义为 private。6.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号