PHP 类中的静态变量的继承

来源:互联网 发布:软件外包人员保密协议 编辑:程序博客网 时间:2024/05/16 02:19

        在此我首先运行一段小程序,先不去直接讲出静态变量的继承在PHP中语法规则,for  example:

    class Base{
          public $a;
          public static $b;
    }

   class Derived extends Base{
         public function __construct(){
               $this->a=0;
               parent::$b=0;
         }
     
         public function f(){
              $this->a++;
             parent::$b++;
         }
   }
 
 $D1=new Derived();
 $D2=new Derived();
 
 $D1->f();
 echo $D1->a." ".Derived::$b."<br>";
 $D2->f();
 echo $D2->a." ".Derived::$b."<br>";

得出的结果是,如下:

  在此有的人可能会好奇,为什么Derived::$b得出来的结果是:2,而不是:1?

  由上面这个小例子,可以得出原因:当一个子类,继承了父类中的静态变量之后,在实例化不同的对象时,所访问原来的那个静态变量所指向的地址是同一个地址。而不会因为新的实例化对象,从而开辟一段新的地址给这个变量。


0 0