在php中使用受保护的静态属性和继承的奇怪行为

时间:2015-11-17 12:58:12

标签: php static visibility

我在php

中遇到静态成员和继承问题

为什么会这样:

class A {
   public static function me() {
     echo static::$b;
   }
}

class B extends A
{
 protected static $b = "hello";
}
B::me();

这不是??????????:

class A {
   public static function me() {
     echo static::$b;
   }
}

class B extends A
{
 private static $b = "hello";
}
B::me();

据我所知,我指的是来自A上下文的变量$ b 但为什么我可以访问受保护的成员而不是私有成员? 谢谢。

1 个答案:

答案 0 :(得分:0)

看。 private仅适用于班级本身,而protected仅适用于家庭。难怪如果你为B声明它private,无论B是否继承自A,都无法在A中访问$ B.另一方面,如果你声明它protected,A也可以访问它,因为它属于到B的家庭。