什么是面向对象?面向对象的简单了解!返回列表
上传时间:2015-02-02 内容关键字:什么是面向对象?面向对象的简单了解!
8. self 和 parent :
1. 概念:self :代表本类,自身(不要理解为本类的对象)
parent: 代表父类
2. 使用场景:在引入自身的静态属性和静态方法,以及父类的属性和方法的时候,可以用到。
3. 用法:
self::$staticProperty 调用静态属性 //有$符号
self::staticMothed 调用静态方法
parent::Mothed; 调用父类的所有方法
--------
$this->Property //没有$符号
Human::HEAD;(const HEAD = 1;) //常量
4. class Human{
static public $head=1;
public function say(){
echo Human::$head; 改为 :echo self::$head;
}
}
当我们这个类名需要改的时候,其他涉及到类名的地方都必须跟着改,不是很方便,如果使用类名的次数很庞大的时候,我们的灵活性就极度下降了,这个时候如果在类内使用类名的放换成self的话,讲解决这个问题。
class Stu extends Human{
static public $head = 2;
public function say(){
echo self::$head; //子类继承父类的$head后重写,所以sel::$head调用的子类的2.
echo parent::$head; == Human::$head; //但是我依旧想调用父类的$head,这样就ok了。
}
}
$ming = new Stu();
$ming->say();
5. 用$this 还是用 parent?
class a{
public function a1(){
echo ‘this is class function a1()’;
}
}
class b extends a{
public function b1(){
$this->a1();
}
public function b2(){
parent::a1();
}
}
$b = new b();
$b->b1();
$b->b2();
解析:
从效果看:显示效果是一样的。
从速度看:理论上parent::稍微快一点点,因为它直接锁定的就是父类中的方法,$this它 是先从子类中搜索,如果没有才从继承过来的父类中找。
从面向对象:继承过来的就是自己的,$this更符合面向对象的思想。
答案:用$this,除非你明确要调用父类中某个方法,而这个方法子类已经重写,和父类不同了。
反例演示:
class a{} class b extends a{} class c extends b{} ......
class f extends e{如果要调用a类中的方法,总不能parent::parent::parent::.....吧??}
- 上一篇:php-fpm 基础介绍
- 下一篇:COOKIE、SESSION之彻底搞定!