因为 class C将A中的__construct1进行了重载。另外你的code只能显示3,不会显示2吧。

解决方案 »

  1.   

    是的,写错的。
    是否可以这样结论:为了用parent调用父类构造函数,构造函数只能使用静态函数或当前类内已经是final的函数。例如:
    class A{
      function __construct() {
        $this->fun1();
        $this->fun2();
      }
      
      final function fun1() {
        ...
      }
      static function fun2() {
       ... 
      }
    }否则,重载后实例的函数已经被更新,出现死循环。
      

  2.   

    继承跟被继承里面都有构造函数时、
    不会暗中调用其父类的构造函数、
    需要显示调用parent::__construct()
      

  3.   

    所谓的重载只是解决了一个类中有多个方法同名的问题构造函数名字是固定的 但想调用父类的构造函数咋办呢 就有了parent::其实也没别的就是调用父类中这个名字的方法 避免了子类覆盖父类方法的问题$argc = func_num_args(); 
    $args = func_get_args(); 
    call_user_func_array(array($this,"__construct".$argc),$args); 
    这样的写法俺只见过但没用过 觉得会把逻辑搞的很乱 踏实的用参数多好 简单直观