<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                類型的訪問修飾符允許開發人員對類成員的訪問進行限制,這是PHP5的新特性,但卻是OOP語言的一個好的特性。而且大多數OOP語言都已支持此特性。PHP5支持如下3種訪問修飾符: public (公有的、默認的),protected (受保護的)和private (私有的)三種。 public 公有修飾符,類中的成員將沒有訪問限制,所有的外部成員都可以訪問(讀和寫)這個類成員(包括成員屬性和成員方法),在PHP5之前的所有版本中,PHP 中類的成員都是public的,而且在PHP5中如果類的成員沒有指定成員訪問修飾符,將被視為public 。例: ~~~ 1 public $name; 2 public function say(){ }; ~~~ private 私有修改符,被定義為private的成員,對于同一個類里的所有成員是可見的,即沒有訪問限制;但對于該類的外部代碼是不允許改變甚至讀操作,對于該類的子類,也不能訪問private修飾的成員。例: ~~~ 1 private $var1 = 'A'; //屬性 2 private function getValue(){ } //函數 ~~~ 類內部訪問方式為:$this->var1,$this->getValue() protected保護成員修飾符,被修飾為protected的成員不能被該類的外部代碼訪問。但是對于該類的子類有訪問權限,可以進行屬性、方法的讀及寫操作,該子類的外部代碼包括其的子類都不具有訪問其屬性和方法的權限。 例: ~~~ 1 protected $name; 2 protected function say(){ }; ~~~ | &nbsp; | private | protected | public | | -- | -- | -- | -- | | 同一個類中 | √ | √ | √ | | 類的子類中 | | √ | √ | | 所有的外部成員 | | | √ | 屬性訪問控制示例: ~~~ 1 <?php 2 /** 3 * Define MyClass 4 */ 5 class MyClass 6 { 7 public $public = 'Public'; 8 protected $protected = 'Protected'; 9 private $private = 'Private'; 10 11 function printHello() { 12 echo $this->public; 13 echo $this->protected; 14 echo $this->private; 15 } 16 } 17 18 $obj = new MyClass(); 19 echo $obj->public; // Works 20 echo $obj->protected; // Fatal Error 21 echo $obj->private; // Fatal Error 22 $obj->printHello(); // Shows Public, Protected and Private 23 24 /** 25 * Define MyClass2 26 */ 27 class MyClass2 extends MyClass 28 { 29 // We can redeclare the public and protected method, but not private 30 protected $protected = 'Protected2'; 31 32 function printHello() { 33 echo $this->public; 34 echo $this->protected; 35 echo $this->private; 36 } 37 } 38 39 $obj2 = new MyClass2(); 40 echo $obj->public; // Works 41 echo $obj2->private; // Undefined 42 echo $obj2->protected; // Fatal Error 43 $obj2->printHello(); // Shows Public, Protected2, not Private 44 ?> ~~~ 方法訪問控制示例: ~~~ 1 <?php 2 /** 3 * Define MyClass 4 */ 5 class MyClass 6 { 7 // Contructors must be public 8 public function __construct() { } 9 10 // Declare a public method 11 public function MyPublic() { } 12 13 // Declare a protected method 14 protected function MyProtected() { } 15 16 // Declare a private method 17 private function MyPrivate() { } 18 19 // This is public 20 function Foo() { 21 $this->MyPublic(); 22 $this->MyProtected(); 23 $this->MyPrivate(); 24 } 25 } 26 27 $myclass = new MyClass; 28 $myclass->MyPublic(); // Works 29 $myclass->MyProtected(); // Fatal Error 30 $myclass->MyPrivate(); // Fatal Error 31 $myclass->Foo(); // Public, Protected and Private work 32 33 /** 34 * Define MyClass2 35 */ 36 class MyClass2 extends MyClass 37 { 38 // This is public 39 function Foo2() { 40 $this->MyPublic(); 41 $this->MyProtected(); 42 $this->MyPrivate(); // Fatal Error 43 } 44 } 45 46 $myclass2 = new MyClass2; 47 $myclass2->MyPublic(); // Works 48 $myclass2->Foo2(); // Public and Protected work, not Private 49 ?> ~~~ 另外在子類覆蓋父類的方法時也要注意一點,子類中方法的訪問權限一定不能低于父類被覆蓋方法的訪問權限,也就是一定要高于或等于父類方法的訪問權限。 例如,如果父類方法的訪問權限是protected,那么子類中要覆蓋的權限就要是protected和public,如果父類的方法是public那么子類中要覆蓋的方法只能也是public,總之子類中的方法總是要高于或等于父類被覆蓋方法的訪問權限。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看