关于php访问控制的问题
<br>class MyClass{<br> public $public = 'public';<br> protected $protected = 'protected';<br> private $private = 'private';<br> <br> function printHello(){<br> echo $this->public;<br> echo $this->protected;<br> echo $this->private . "<br/>";<br> }<br>}<br><br>$obj = new MyClass();<br>$obj->printHello();<br><br>class MyClass2 extends MyClass{<br> <br> function printHello(){<br> echo $this->public;<br> echo $this->protected;<br> echo $this->private . "<br/>";<br> }<br>}<br><br>$obj2 = new MyClass2();<br>$obj2->printHello(); // 输出 Public、Protected 和 Undefined<br>class MyClass3 extends MyClass{<br> <br>}<br><br>$obj3 = new MyClass3();<br>$obj3->printHello(); // 输出 Public、Protected 和 private<br>为什么$obj3->printhello的private有值,不是private 定义的类成员则只能被其所在类访问。
------解决思路----------------------
myclass2 中有printhello 重写了 myclass中的printhello。
而myclass2 调用 myclass的$private为undefined 因为myclass2的printhello方法没有权限读取myclass的$privite
myclass3 中没有printhello,所以$obj3->printhello实际上是调用myclass的printhello
myclass printhello方法读取 myclass $private有权限。所以 $obj3->printhello可以显示出myclass 的 $private
------解决思路----------------------
楼上正解!!!!










