Rumah > pembangunan bahagian belakang > tutorial php > 关于php访问控制的有关问题

关于php访问控制的有关问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-13 12:24:05
asal
943 orang telah melayarinya

关于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 />
Salin selepas log masuk

为什么$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

------解决思路----------------------
楼上正解!!!!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan