码迷,mamicode.com
首页 > Web开发 > 详细

PHP继承、$this的相关概念

时间:2015-12-31 12:44:23      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

  面向对象的一个重要特性就是继承。最近在看源码中,遇到的一系列问题表明的自己的基础还是有些许欠缺,主要问题如下:

  1:子类在继承父类的时候,如果父类定义了__construct()构造方法,并且要求传递参数,而子类使用默认的__construct()构造方法的时候,子类依然在实例化的时候,要传递参数。结论:子类在实例化的时候,会跟随的父类的实例化

class A {
        
    protected $name;

        /**
        ** 自定义了初始化构造方法
        **/
    public function __construct($name){
        $this->name = $name;
        $this->funcAa();
    }
}

class B extends A{

}

$b = new B();        //实例化错误,子类初始化的时候,父类无法正常初始化

$b = new B();        //正确

  2:$this关键字代表的当前的实例化对象,也就是new后面的对象。如果是子类实例化,当父类和子类同时存在方法的时候,也就是JAVA中的重写,那么调用子类的方法,如果子类方法不存在,则调用父类的方法。遵循就近原则

class A {
    public function funcA(){
        echo "This is A class";
    }

    public function funcAa(){
        /**
        **  指定的是B这个实例化对象
        **/
    $this->funcA();
    }
}

class B extends A{
        
    /**
    **    重写父类的方法
    **/
    public function funcA(){
        echo "This is B class";
    }
}

$b = new B();
$b->funcAa();        //子类没有,则自动调用父类的方法,子类复写了父类的方法,则调用子类自身的方法

 

PHP继承、$this的相关概念

标签:

原文地址:http://www.cnblogs.com/axunz/p/5091194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!