如果子类自身有构造方法,则调用子类本身的.如果子身无构造方法.则调用父类的.
<?php
class a
{
Function __construct ()
{
echo "a";
}
}
class b extends a
{
Function __construct ()
{
echo "b";
}
}
$test =new b;
<?php
class a
{
Function __construct ()
{
echo "a";
}
}
class b extends a
{
Function __construct ()
{
echo "b";
}
}
$test =new b;
如果你的子类在定义的时候,没有声明__construct()方法,那么会使用父类的构造函数。
<?php
class A{
public $a;
public function __construct(){
$this->a = "A";
}
public function showA(){
echo $this->a;
}
}
class B extends A {
function showB(){
$this->showA();
}
}$b = new B();
$b->showB();//打印A
?>
如果你的子类显式的定义了__construct()方法,那么实例化的时候只会调用子类的构造函数。
<?php
class A{
public $a;
public function __construct(){
$this->a = "A";
}
public function showA(){
echo $this->a;
}
}
class B extends A {
public function __construct(){
}
function showB(){
$this->showA();
}
}$b = new B();
$b->showB();//什么都不显示
?>
如果在这种情况下你需要调用父类的构造函数,那么就加上parent::__construct();如下<?php
class A{
public $a;
public function __construct(){
$this->a = "A";
}
public function showA(){
echo $this->a;
}
}
class B extends A {
public function __construct(){
parent::__construct();
}
function showB(){
$this->showA();
}
}$b = new B();
$b->showB();//输出A
?>