Heim >Backend-Entwicklung >PHP-Tutorial >关于php访问控制的有关问题

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-13 12:24:05944Durchsuche

关于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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP札记Nächster Artikel:一路让人蛋疼的面试题