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

WBOY
リリース: 2016-06-13 12:24:05
オリジナル
905 人が閲覧しました

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

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート