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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值