PHP 中类的继承和构造函数
2009-12-15 16:25
148 查看
HP4.x 版本: PHP 4.x 的构造函数名与类名相同。
子类的构造函数名与子类名相同(废话)。
在子类里父类的构造函数不会自动执行。
要在子类里执行父类的构造函数,必须执行类似以下语句:
$this->[父类的构造函数名()]
例如:
class base1
{
function base1()
{
echo 'this is base1 construct';
}
}
class class1 extends base1
{
function class1()
{
$this->base1();
echo 'this is class1 construct';
}
}
$c1 = new class1;
PHP5.x 版本:
PHP5.0 以上版本对类的功能进行了很大的扩充。类的构造函数统一命名为__construct()。
子类的构造函数名也是__construct()(也是废话)。
在子类里父类的构造函数会不会执行,分两种情况:
1,如子类不定义构造函数 __construct(),则父类的构造函数默认会被继承下来,且会自动执行。
2,如子类定义了构造函数 __construct(),因为构造函数名也是__construct(),所以子类的构造函数实际上是覆盖(override)了父类的构造函数。这时执行的是该子类的构造函数。
这时如果要在子类里执行父类的构造函数,必须执行类似以下语句:
parent::__construct();
例如:
class base2
{
function __construct()
{
echo 'this is base2 construct';
}
function __destruct()
{
}
}
class class2 extends base2
{
function __construct()
{
parent::__construct();
echo 'this is class2 construct';
}
}
注意 parent::__construct(); 语句不一定必须放在子类的构造函数中。放在子类的构造函数中仅仅保证了其在子类被实例化时自动执行。
PHP4.0 和 5.0 类构造函数的兼容问题:
在 PHP5.0 以上版本里,还兼容了 4.0 版本的构造函数的定义规则。如果同时定义了4.0的构造函数和 __construct()函数,则__construct() 函数优先。
为了使类代码同时兼容 PHP4.0 和 5.0,可以采取以下的方式:
class class3
{
function __construct() //for PHP5.0
{
echo 'this is class2 construct';
}
function class3() //for PHP4.0
{
$this->__construct();
}
}
$c3 = new class3;
子类的构造函数名与子类名相同(废话)。
在子类里父类的构造函数不会自动执行。
要在子类里执行父类的构造函数,必须执行类似以下语句:
$this->[父类的构造函数名()]
例如:
class base1
{
function base1()
{
echo 'this is base1 construct';
}
}
class class1 extends base1
{
function class1()
{
$this->base1();
echo 'this is class1 construct';
}
}
$c1 = new class1;
PHP5.x 版本:
PHP5.0 以上版本对类的功能进行了很大的扩充。类的构造函数统一命名为__construct()。
子类的构造函数名也是__construct()(也是废话)。
在子类里父类的构造函数会不会执行,分两种情况:
1,如子类不定义构造函数 __construct(),则父类的构造函数默认会被继承下来,且会自动执行。
2,如子类定义了构造函数 __construct(),因为构造函数名也是__construct(),所以子类的构造函数实际上是覆盖(override)了父类的构造函数。这时执行的是该子类的构造函数。
这时如果要在子类里执行父类的构造函数,必须执行类似以下语句:
parent::__construct();
例如:
class base2
{
function __construct()
{
echo 'this is base2 construct';
}
function __destruct()
{
}
}
class class2 extends base2
{
function __construct()
{
parent::__construct();
echo 'this is class2 construct';
}
}
注意 parent::__construct(); 语句不一定必须放在子类的构造函数中。放在子类的构造函数中仅仅保证了其在子类被实例化时自动执行。
PHP4.0 和 5.0 类构造函数的兼容问题:
在 PHP5.0 以上版本里,还兼容了 4.0 版本的构造函数的定义规则。如果同时定义了4.0的构造函数和 __construct()函数,则__construct() 函数优先。
为了使类代码同时兼容 PHP4.0 和 5.0,可以采取以下的方式:
class class3
{
function __construct() //for PHP5.0
{
echo 'this is class2 construct';
}
function class3() //for PHP4.0
{
$this->__construct();
}
}
$c3 = new class3;
相关文章推荐
- 关于PHP中构造函数以及子类继承父类构造函数的相关问题
- php继承后构造函数的特性
- PHP面向对象 实例化 构造函数 封装 继承 静态
- php 4.X与5.x版本构造函数区别与类的继承
- PHP面向对象 实例化 构造函数 封装 继承 静态
- php 构造函数的继承
- PHP 中类的继承和构造函数概念澄清
- 面向对象--PHP中类的继承和构造函数
- PHP面向对象笔记 —— 120 构造函数的继承
- PHP中类的继承和构造函数的继承
- PHP面向对象之类的继承与构造函数
- JavaScript中继承(二)-- 借用构造函数
- PHP面对对象继承练习
- PHP实现多继承的效果(tarits)
- php 构造函数格式,具体该怎么写?应该注意什么呢?
- php 面向对象之继承、多态和静态方法
- C++继承中构造函数和析构函数的调用顺序
- 浅谈JS继承_借用构造函数 & 组合式继承
- php的构造函数解析
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容