首页 > 试题广场 >

下列代码输出内容是( ) ?

[单选题]
下列代码输出内容是(   ) 
<?php 
class A{ 
    public function __construct(){ 
        echo "Class A...<br/>"; 
    }
}
class B extends A{
    public function __construct(){
        echo "Class B...<br/>"; 
    }
}
new B();
?>
  • Class B...
  • Class A... Class B...
  • Class B...Class A...
  • Class A...
A,php中子类如果定义__construct则会覆盖父类的__construct,如果没有定义__construct,则会使用父类的,可以在子类的__construct中显示调用 parent::__construct();
发表于 2015-05-13 11:53:22 回复(1)
这个和java的还是有区别的
发表于 2017-03-02 10:32:44 回复(3)
如果子类__construct中没有调用父类__construct,子类__construct会覆盖掉父类__construct;
如果子类__construct中调用了父类__construct,子类、父类的__construct都会生效,具体输出顺序看实际情况。
// 1、子类有构造函数,如果在子类中没调用父类构造函数,子类构造函数会覆盖掉父类构造函数
class A{ 
    public function __construct(){ 
        echo "Class A...<br/>"; 
    }
}
class B extends A{
    public function __construct(){
        echo "Class B...<br/>"; 
    }
}
new B();  // Class B...<br/>

// 2、如果在子类构造函数中调用了父类构造函数,先调用父类构造函数,就会先输出父类构造函数的内容,再输出子类构造函数的内容
class A{ 
    public function __construct(){ 
        echo "Class A...<br/>"; 
    }
}
class B extends A{
    public function __construct(){
        parent::__construct();
        echo "Class B...<br/>"; 
    }
}
new B(); // Class A...<br/>Class B...<br/>

// 3、如果在子类构造函数中调用了父类构造函数,先写子类构造函数的内容,再去调用父类构造函数,就会先输出子类构造函数的内容,再输出父类构造函数的内容
class A{ 
    public function __construct(){ 
        echo "Class A...<br/>"; 
    }
}
class B extends A{
    public function __construct(){
        echo "Class B...<br/>"; 
        parent::__construct();
    }
}
new B(); // Class B...<br/>Class A...<br/>  


发表于 2021-07-30 16:05:52 回复(0)
<p>因为以为没有重写父类的方法</p>
发表于 2021-01-12 22:01:38 回复(0)
子类的构造方***覆盖父类的构造方法,想要执行父类的构造方法可以使用parent::
发表于 2020-04-09 09:35:15 回复(0)
a
发表于 2015-03-19 16:00:33 回复(0)