NGINX社区官方微服务训练营,深入了解K8s网络,线上课程+专家答疑,立即加入>>>
private $var1; //public protected和private 结果不一样
public function __construct(){
$this->var1 = 'A';
}
public function display(){
//var_dump($this);
var_dump($this->var1);
}
}
class B extends A{
public $var1;
public function __construct(){
parent::__construct();
$this->var1 = 'B';
}
public function display2(){
parent::display();
var_dump($this->var1);
}
}
我以前提过这个问题 也跟OSC上的一些高人探讨过 但是今天回头看了一下 还是有一些疑惑 所以想再次跟高手们探讨探讨
我现在的问题是这样的
在class A的display方法里打印$this:var_dump($this)
脚本执行后 这个$this 是class B的实例 这是毋庸置疑的 因为执行入口是$b->display2() 若$var1是private属性 经class B继承 成为不可访问属性 也就是说 现在$this是B的实例 其中有一个不可访问的$var1和一个可以访问的$var1 没有覆盖关系 这样 $this->var1应该是‘B’才对 而结果却是‘A’
这不是很奇怪吗
我执行的结果 输出 是 A B 啊
有什么问题么?
parent::display(); 这句表示执行父类的display方法.所以在display方法里this 指向的是 A不是B