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

                # static靜態屬性與靜態方法 **靜態:** 屬于類而不屬于單個對象 (全局的,所有對象共享的) **靜態屬性:** 類的方法內調用靜態屬性時,不能使用$this->方式,而要使用self::的方式 **靜態方法:** 在類沒有任何對象的時候也能被調用 當成普通方法來用也沒問題的 在靜態方法中不能調用普通方法 ## 實例 ~~~ class People { static private $name; public function setname($namec) { self::$name = $namec; } public function getname() { return self::$name; } static public function name($namecc) { echo "I am $namecc"; } static public function getmyname(){ return self::$name; } } $A = new People(); $A->setname("小明 <br/>"); echo $A->getname(); $B = new People(); $B->setname("小智 <br/>"); echo $B->getname(); echo $A->getname(); echo People::name("小霞"); echo "<br/>"; ~~~ **靜態成員代碼示例** ~~~ class Foo { public static $my_static = 'foo'; public function staticValue() { return self::$my_static; } } class Bar extends Foo { public function fooStatic() { return parent::$my_static; } } print Foo::$my_static . " "; $foo = new Foo(); print $foo->staticValue() . " "; // print $foo->my_static . " "; // Undefined "Property" my_static print $foo::$my_static . " "; $classname = 'Foo'; print $classname::$my_static . " "; // PHP 5.3.0之后可以動態調用 print Bar::$my_static . " "; $bar = new Bar(); print $bar->fooStatic() . " "; ~~~ ## 總結 **靜態變量** 靜態變量是只存在于函數作用域的變量,不過,在函數執行完成后,這種變量的值不會丟失,也就是說,在下一次調用這個函數時,變量仍然會記得原來的值。要將某個變量定義為靜態的,只需要在變量前加上 static 關鍵字即可。 在類中,static關鍵字有兩種主要用法,一是用來定義靜態成員,一是用來定義靜態方法。在類的內部,可以使用作用域限定符 (::) 來訪問不同層次作用域的變量。 **靜態方法** 靜態方法和非靜態方法之間有一個重要的區別:在調用靜態方法時,不再需要擁有類的實例。 靜態方法和非靜態方法使用原則:一是如果某個方法中不包含$this變量,就應該時靜態方法;如果不需要類的實例,可能還應該使用靜態類,這樣可以免去實例化類的工作。另,在靜態方法中時不能使用$this變量的,因為靜態方法不屬于某個特定的實例。 ## 區別 1. static方法是類中的一個成員方法,屬于整個類,即使不用創建任何對象也可以直接調用! 2. 靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀。 3. 靜態方法和靜態變量創建后始終使用同一塊內存,而使用實例的方式會創建多個內存。 4. C++中,若類的方法前加了static關鍵字,則該方法稱為靜態方法,反之為實例方法。靜態方法為類所有,可以通過對象來使用,也可以通過類來使用。但一般提倡通過類名來使用,因為靜態方法只要定義了類,不必建立類的實例就可使用。靜態方法只能用類的靜態成員。
                  <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>

                              哎呀哎呀视频在线观看