ホームページ >バックエンド開発 >PHPチュートリアル >PHPのアクセス制御に関する質問

PHPのアクセス制御に関する質問

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 12:24:05949ブラウズ

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 定義されていないクラス メンバーには、そのメンバーが配置されているクラスからのみアクセスできます。
------ソリューションのアイデア----------------------

printHello の重複がありますin MyClass2 MyClass に printHello を書き込みました。
MyClass2 は、MyClass2 の printHello メソッドに MyClass の $privite を読み取る権限がないため、MyClass の $private を未定義として呼び出します

MyClass3 には printHello がないため、$obj3->printHello は実際には MyClass の printHello を呼び出します
MyClass の printHello メソッドには、Myclass $private を読み取る権限があります。したがって、$obj3->printHello は MyClass の $private

を表示できます------ソリューションのアイデア------ -
二階が正解です! ! ! !

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP ノート次の記事:PHP ノート