我有两个代码片段(关于static关键字),我希望它们具有相同的输出,但实际上输出是不同的.
问题是为什么?
片段1
class base
{
public static $var = 1;
}
class sub extends base
{
public static $var = 2;
}
echo base::$var; // Outputs 1
Run Code Online (Sandbox Code Playgroud)
1
片段2
class base2
{
public static $var2 = 1;
}
class sub2 extends base2
{
}
sub2::$var2 = 2;
echo base2::$var2; // Outputs 2
Run Code Online (Sandbox Code Playgroud)
2
Vin*_*ran 18
我想补充一点.
STATIC变量不与类的任何特定实例/对象相关联.因此,您使用父类引用或子类引用修改变量,同一副本将被修改.
因此,除了将Public Static理解为Global之外,请理解它与任何特定实例无关,因此在更新静态变量的任何类层次结构引用中,相同的内存位置都会更新.
-
维诺德
| 归档时间: |
|
| 查看次数: |
26688 次 |
| 最近记录: |