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

WBOY
풀어 주다: 2016-06-13 12:24:05
원래의
909명이 탐색했습니다.

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

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿