php5的面向对象虽然加强了很多,但还有很多东西比起java的面向对象弱了很多。有些东西甚至让人费解,就比如下面的代码,b extends a ,实例化b时a的构造函数却没执行?不知道实例化b时,php到底是则么执行的,高手来帮忙解惑!还有php的static成员竟然能在非static方法中使用,还好反过来会报错。好了,先贴代码
class a {
function __construct() {
echo "a";
}
}
class b extends a{
function __construct(){
echo "b";
}
private $x=100;
public static function getx(){
return $this->x;
}
}
$x=new b();
echo $x->getx();
结果是:
b100
“a”竟然没有输出,真不知到php里类初始化的顺序
补充:
刚刚发现,原来是b的构造函数覆盖了a的构造函数,把b的构造函数去掉,就能输出a。真奇怪构造函数也能被覆盖?