PHP面向对象

上传人:jiups****uk12 文档编号:45560027 上传时间:2018-06-17 格式:PPT 页数:31 大小:158.50KB
返回 下载 相关 举报
PHP面向对象_第1页
第1页 / 共31页
PHP面向对象_第2页
第2页 / 共31页
PHP面向对象_第3页
第3页 / 共31页
PHP面向对象_第4页
第4页 / 共31页
PHP面向对象_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《PHP面向对象》由会员分享,可在线阅读,更多相关《PHP面向对象(31页珍藏版)》请在金锄头文库上搜索。

1、PHP面向对 象技术TensSun面向对象的PHPPHP5的面向对象模型PHP的类与对象继承访问类型抽象方法和抽象属性接口PHP 5的面向对象模型n面向对象的概念(oop) oop(Object-Oriented Programming, 面向 对象的编程)技术为编程人员敞开了一扇大门,使 其编程的代码更简洁、更易于维护,并且具有更强 的可重用性。n什么是类?类是具有相同属性和服务的一组对象 的集合。它为属于该类的所有对象提供了统一的抽 象描述,其内部包括属性和服务两个主要部分。在 面向对象的编程语言中,类是一个独立的程序单位 ,它应该有一个类名并包括属性说明和服务说明两 个主要部分。n什么是

2、对象?对象是系统中用来描述客观事物的一个 实体,它是构成系统的一个基本单位。一个对象由 一组属性和对这组属性进行操作的一组服务组成。 从更抽象的角度来说,对象是问题域或实现域中某 些事物的一个抽象,它反映该事物在系统中需要保 存的信息和发挥的作用;它是一组属性和有权对这 些属性进行操作的一组服务的封装体。客观世界是 由对象和对象之间的联系组成的。n类和对象的关系类与对象的关系就如模具和铸件的关系 ,类的实例化结果就是对象,而对一类对象的抽象 就是类.类描述了一组有相同特性(属性)和相同行 为(方法)的对象。n封装性:封装性就是把对象的属性和服务结合成一个 独立的相同单位,并尽可能隐蔽对象的内部

3、细节,包 含两个含义: 1.把对象的全部属性和全部服务结合在一起, 形成一个不可分割的独立单位(即对象)。 2.信息隐蔽,即尽可能隐蔽对象的内部细节, 对外形成一个边界或者说形成一道屏障,只保留 有限的对外接口使之与外部发生联系。封装的原则在软件上的反映是:要求使 对象以外的部分不能随意存取对象的内部数据(属性 ),从而有效的避免了外部错误对它的“交叉感染“, 使软件错误能够局部化,大大减少查错和排错的难度 。n继承性:特殊类的对象拥有其一般类的全部 属性与服务,称作特殊类对一般类的继承。例 如,轮船、客轮;人、大人。一个类可以是多个一般类的特殊类 ,它从多个一般类中继承了属性与服务,这称 为

4、多继承。例如,客轮是轮船和客运工具的特 殊类。在java语言中,通常我们称一般类为父( superclass,超类),特殊类为子(subclass)。n多态性:对象的多态性是指在一般类中定义 的属性或服务被特殊类继承之后,可以具有不 同的数据类型或表现出不同的行为。这使得同 一个属性或服务在一般类及其各个特殊类中具 有不同的语义。例如:“几何图形“的“绘图“方法,“ 椭圆“和“多边形“都是“几何图“的子类,其“绘图“ 方法功能不同。PHP的类与面向对象一、PHP和其它面向对象语言的共性及区别(以C和PHP作比较)二、在PHP中定义类: 格式:class classname extends pa

5、rent class var $property =value;. /属性 function functionname ( args ) 代码 . /类的方法(成员函数) 生成对象(类的实例化): $对象名=new classname( );三、类的属性及方法 n属性:通过在类定义中使用关键字“ var “来声明变 量,即创建了类的属性。如: var $somevar;n方法(成员函数):通过在类定义中声明函数,即创建了类的方 法。如: function somefun(参数列表) . . n属性与方法的访问:PHP中属性与方法的引用操作符是“ - ” 格式:对象-属性或方法n实例:name.

6、“; $zhangsan=new person(); /生成对象zhangsan $zhangsan-name=“zhangsan“; /给对象中的name 赋值 $zhangsan-age=26; /给对象中的age赋值 $zhangsan-say(); /调用方法say() echo “age is “.$zhangsan-age;/输出age值 ?n使用对象属性:在一个类中,可以访问一个特殊的指针$this, 例如上面的person类中一个属性为$name,则当在该 类中通过一个操作设置或访问该变量时,可以使用 $this-name来引用.n对象的生成:当定义好类后,我们使用new关键字

7、来生成一 个对象。$对象名称 = new 类名称;由于对象资料封装的特性,对象属性(类中 的定义的变量)是无法由主程序区块来访问的,必 须通过对象来调用类中所定义的函数,间接地达成 存取控制类中的资料目的。n对象和类的关系:对象是实际存在的,占有动态资源。类是对象的蓝图,可能占有静态资源。对象属性占有动态资源类(静态)属性实际上是有类名字空间上的“ 全局变量”n性能考虑:每个对象要单独占用数据空间增加的调用层次可能消耗执行时间构造函数与析构函数n构造函数:大多数类都有一种称为构造函数的特殊 方法。当创建一个对象时,它将自动调用构造函数 ,通常用它执行一些有用的初始化任务。构造函数的声明与其它操

8、作的声明一样 ,只是其名称必须是_ _construct( )。这是PHP5 中的变化,以前的版本中,构造函数的名称必须与 类名相同。为了向下兼容,如果一个类中没有名为 _ _construct( )的方法,PHP将搜索一个与类名相 同的方法。格式:function _ _construct ( 参数 ) . . 实例:name=“lisi“; $this-age=28; function say() echo “my name is “.$this- name.“; echo “my age is “.$this-age.“; $per=new person(); $per-say(); $

9、per-name=“zhangsan“; $per-age=26; $per-say(); ?n析构函数:与构造函数相对的就是析构函数。析构函 数是PHP5新添加的内容,在PHP4中没有析构函数。析 构函数允许在销毁一个类之前执行的一些操作或完成 一些功能,这些操作或功能通常在所有对该类的引用 都被重置或超出作用域时自动发生。与构造函数的名称类似,一个类的析构函 数名称必须是_ _ destruct( )。析构函数不能带有任 何参数。 例如:继承n如果类是另一个类的子类,可以用关键词“ extends “来指明其继承关系。如下代码创建了一个 名为B的类,它继承了在它前面定义的类A。 Class

10、 A class B extends A Var $num1; var $num2; function fun1() function fun2() n 如下所示的所有对类B对象的操作和属性的访问 都是有效的: $b=new B(); $b-$num1=10;$b -$num2=20; $b-fun1( ); $b-fun2( );n注:PHP不支持多重继承PHP是一种单继承的语言(single inheritance ),和C不同重载新的方法n在子类里面重写父类的方法n在子类中访问父类中的被覆盖的方法在访问时需要在parent后面加上”:”访问类型n类型的访问修饰符允许开发人员对类成员的访

11、问进行限制。n这是PHP5的新特性,但却是OOP语言的一个好 的特性。而且大多数OOP语言都已支持此特性。 PHP5支持如下3种访问修饰符:npublic (公有的 默认的)nprivate (私有的)nprotected (受保护的)一、public 公有修饰符:n类的成员将没有访问限制,所有的外部成员都可以访问(读和写)这个类成员。注:在PHP5之前的所有版本中,类的成员都 是public的。例:public $name;二、private 私有修改符:n被定义为private的成员,对于同一个类里的所有成员是可见的,即是没有访问限制;但对于该类的外部代码是不允许改变甚至读操作,对于该类的

12、子类,也不能访问private修饰的成员。例:private $var1 = A; /属性private function getValue() /函数三、protected保护成员修饰符:被修饰为protected的成员不能被该类的外部代码访问。但是对于该类的直接子类有访问权限,可以进行属性、方法的读及写操作。 该子类的外部代码包括其的子类都不具有访问其属性和方法的权限。注:在PHP5中如果类的成员没有指定成员访问修饰符,将被视为public 。_get()和_set()n一般来说,总是把类的属性定义为private,这更符合现实的逻 辑。但是, 对属性的读取和赋值操作是非常频繁的,因此在P

13、HP5中 ,预定义了两个函数_get()和_set()来获取和赋值其属性。 /_get() function _get($property_name) if(isset($this-$property_name) return($this-$property_name); else return(NULL); /_set() function _set($property_name, $value) $this-$property_name = $value; 静态属性和方法nPHP中使用static关键字来定义静态属 性或方法n不能用this来引用静态变量或方法,而 需要用self这个特殊的

14、类。n在类外部可以使用:类:静态方法克隆对象n有时可能需要根据一个对象完全克隆出一个 一模一样的对象,而且克隆以后,两个对象互不 干扰。nPHP5定义了一个特殊的方法名, 称为 _clone()n用_clone()方法将建立一个与原对象拥有相 同属性和方法的对象。抽象方法和抽象类n在OOP语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法做为外部代码访问其的接口。而抽象方法就是为了方便继承而引入的。n 抽象方法是做为子类重载的模板使用的。n格式:abstract function 函数名;abstract function 方法名( );n抽象方法的定义及继承重载示例: abst

15、ract class A_class abstract function getPicName( ); /抽象类及抽象方法 class B_class extends A_classpublic function getPicName( )/重载的抽象类的getPicName/方法代码体; /继承了抽象类并重载了抽象方法n抽象类不能被实例化。接口PHP与大多数面向对象编程语言一样,不支持多重继承.也 就是说每个类只能继承一个父类.为了解决这个这个问题 ,PHP引入了接口,接口的思想是指定了一个实现了该接口的 类必须实现的一系列函数. 如果在一个类中只有一个抽象方法,可以将其定义为 interface(接口),或用implements(实现)关键字使用 它。 Interface 接口的定义格式 interface 类名 implements关键字的使用格式 class 类名 implements 接口名当一个类在继承了一个接口后,它必须实现即重载该接 口的所有方法接口中的方法必须定义为公有否则 无法继承例: interface A_class public function getPicName(); class B_class implements A_class public function getPicName() /重载的代码体;

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

当前位置:首页 > 行业资料 > 其它行业文档

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