php类和对象 ppt,php面向对象--php面向对象ppt

面向对象的概念(OOP)

¨对象

¨类

¨对象和类的关系

PHP5已经完全支持面向对象

属性

¨在类定义中声明变量,即创建了类的属性

方法

¨在类定义中声明函数,即创建了方法

PHP中属性与方法的引用操作符是“ - > ”

$this

¨对象内部代表这个对象的引用

构造函数

¨function __construct ( [参数] ) { ... ... }

¨当创建一个对象时,它将自动调用构造函数

构造函数兼容

¨PHP4中,构造函数的名称必须与类名相同。

为了向下兼容,如果一个类中没有名为

__construct( )的方法,PHP将搜索一个与类名

相同的方法

析构函数

¨function __destruct ( ) { ... ... } ¨析构函数是 PHP5新添加的内容,在 PHP4中没

有析构函数

¨析构函数允许在销毁一个类之前执行的一些操

作或完成一些功能

¨析构函数不能带有任何参数

访问类型

¨这是PHP5的新特性,但却是OOP语言的一个

重要特性,而且大多数OOP语言都已支持。

PHP5支持如下 3种访问修饰符:

• public (公有的默认的)

• private (私有的)

• protected (受保护的)

• public

¨类的成员将没有访问限制,所有的外部成员都

可以访问(读和写)这个类成员

¨在PHP5之前的所有版本中,类的成员都是 public的

• private

¨对于该类的外部代码是不允许改变甚至读操作

protected

¨对于该类的直接子类有访问权限

OOP三个基本特征

¨封装

¨继承

¨多态

封装

¨封装性就是把对象的属性和行为结合成一个独

立的相同单位,并尽可能隐蔽对象的内部细节。

¨将类的成员变量声明为 private,再通过public 的

方法来对这个变量进行访问

私有属性的访问

¨set/get方法

¨在PHP5中,预定义了两个函数__get()和

__set()来获取和赋值其属性,检查属性的

__isset()和删除属性的方法__unset()

__get()

n __set()

function __get($property_name) {

if(isset($this->$property_name)) {

return($this->$property_name);

} else {

return null;

}

}

function __set($property_name, $value) {

$this->$property_name = $value;

}

__isset()

n __unset()

function __isset($name) {

return isset($this->$name);

}

function __unset($name) {

unset($this->$name);

}

继承(is a) ¨在PHP中只有单继承,但一个类可以被多个类

继承

¨可以有多层继承,即一个类可以继承某一个类

的子类

¨子类继承父类的所有内容,但父类中的private部分不能直接访问

¨子类中新增加的属性和方法是对父类的扩展

覆盖

¨子类中定义的与父类同名的属性是对父类属性

的覆盖,同名的方法也是对父类方法的覆盖

¨子类中的访问权限>=父类权限

¨调用父类被覆盖的方法:类名::或parent::

parent::__construct();

parent::$name;

parent::fun();

多态

¨对象的多态性是指在父类中定义的属性或行为

被子类继承之后,可以具有不同的数据类型或

表现出不同的行为

¨在PHP中,多态的特性并不明显

包含(has a)

¨一个类中包含另一个类对象

final

¨使用final关键字标记的类不能被继承

¨使用final关键字标记的方法不能被子类覆盖

static

¨在类内部,不能用$this来引用静态变量或方

法,而需要用self来引用

self::$静态属性、self::静态方法

¨在类外部可以使用

类::$静态属性、类::静态方法

const

¨在类里面定义常量使用的是”const”

¨self::CONSTANT; // 类内部访问

¨类名::CONSTANT; // 类外部访问

__toString()

¨直接输出对象引用时自动调用

对象的比较

¨==是比较两个对象的内容

¨===是比较对象的句柄,即引用地址

n 对象类型检测

¨instanceof操作符用于检测当前对象实例是否

属于某一个类的类型

克隆对象

¨在PHP5中要创建一个对象的副本,使用关键

字clone来实现

¨$obj2 = clone $obj;

n __clone()

¨在对象克隆时自动调用

¨__clone()可以没有参数,它自动包含$this和

$that两个指针,$this指向复本,而$that指向

原本

__call()

¨调用不存在的方法时自动调用

n __autoload()

¨自动加载类

function __autoload($class_name) {

include("$class_name"."_class.php");

}

序列化

¨serialize()

¨unserialize()

抽象方法和抽象类

¨abstract function 方法名( );

¨abstract class 类名{ }

¨抽象类不能被实例化,一个抽象类中必须有一

个抽象方法

接口 ¨如果在一个抽象类中包含的只有抽象方法,可 以将其定义为interface(接口) ¨class 类名implements 接口名{ } ¨接口中只能声明常量属性,接口中的方法必须 定义为公有、抽象 ¨接口中的方法也可以声明为static

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值