PHP 类中的静态变量的继承

        在此我首先运行一段小程序,先不去直接讲出静态变量的继承在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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值