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。真奇怪构造函数也能被覆盖?
本文探讨了PHP5中面向对象的一些特性,包括子类构造函数如何覆盖父类构造函数导致父类构造函数不被执行的问题,以及静态成员在非静态方法中使用的情况。
433

被折叠的 条评论
为什么被折叠?



