• 微信:
  • hai764003
  • QQ:
  • 511211014
  • E-mail:
  • jaquery@163.com

案例总数51

访问总数312367

收藏总数310898

什么是面向对象?面向对象的简单了解!返回列表

上传时间: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教程分享网站  phpmywind  脚本之家