如果子类自身有构造方法,则调用子类本身的.如果子身无构造方法.则调用父类的.
<?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;
解决方案 »
- #新手来袭# 一段简单的代码为什么提示出错
- mb_send_mail发邮件时bcc的写法
- Parse error: syntax error, unexpected 什么原因
- smartymo模办中能否直接调用PHP中的函数?
- 这个页面地址是多少http://news.sohu.com/s2006/tvc20/
- 运算符优先级
- session开启但是未注册session变量
- 大哥,请帮帮小妹!进来看看好吗?
- 怎样用session来实现多用户登录 ,并登录到不同的页面上
- 请教:关于file协议的问题
- 哪位大哥仔细讲讲 这个符号 =& ?
- 如何把 a=3的结果排在前面?a=1.2的这些就按照time排列
如果你的子类在定义的时候,没有声明__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
?>