<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之旅 廣告
                # **static** * static關鍵字是在類中描述成員屬性和方法是靜態的。static成員能夠限制外部的訪問,因為static成員是屬于類的,不屬于任何對象實例,是在類第一次被加載的時候分配的空間,其他類無法訪問,只能對壘的實例共享,能對類的成員形成保護 * 靜態成員是在類第一次加載的時候就創建的,所以在類的外部不需要對象而使用類名就可以訪問的到靜態的成員。 * 類里面的靜態方法只能訪問類的靜態屬性,不能訪問類的非靜態成員。在靜態方法中可以通過使用 self::成員屬性的方法進行訪問。 * 靜態屬性不能通過一個類已實例化的對象來訪問(但靜態方法可以)。 ~~~ <? class Person { //下面是人的靜態成員屬性 public static $myCountry = "中國"; //這是人的靜態成員方法 public static function say() { echo "我是中國人"; } } //輸出靜態屬性 echo Person::$myCountry; //訪問靜態方法 Person::say(); (new Person())->say(); //重新給靜態屬性賦值 Person::$myCountry = "美國"; echo Person::$myCountry; ?> ~~~ # 靜態變量與普通變量 在變量的前面加上static 就構成了靜態變量(static 變量)。 **靜態變量:** * 靜態變量屬于靜態存儲方式,其存儲空間為內存中的靜態數據區(在靜態存儲區內分配存儲單元),該區域中的數據在整個程序的運行期間一直占用這些存儲空間(在程序整個運行期間都不釋放),也可以認為是其內存地址不變,直到整個程序運行結束。(在函數執行完后不會被銷毀,保留上次值) * 靜態變量雖在程序的整個執行過程中始終存在,但是在它作 用域之外不能使用。 * 屬于靜態存儲方式的變量不一定就是靜態變量。 例如:外部變量(在PHP中指全局變量)雖屬于靜態存儲方式,但不一定是靜態變量,必須由 static加以定義后才能成為靜態外部變量,或稱靜態全局變量。 **靜態局部變量:** * static類型的內部變量是一種只能在某個特定函數中使用,只會被初始化一次。 * 當在某函數里定義一個靜態變量后,這個變量不會即使函數退出了,在下次調用這個函數時,它會使用前次被調用后留下的值。 * 作用域為該函數內部,外部函數不能使用。 * 局部靜態變量定義時沒有賦初值,系統會自動賦初值0(對數值型變量)或空字符(對字符變量)。 * 局部靜態變量占用內存時間較長,并且可讀性差 **全局局部變量:** * 全局變量(外部變量)的聲明之前加上static 就構成了靜態的全局變量。 * 全局變量本身就是靜態存儲方式,靜態全局變量當然也是靜態存儲方式。這兩者在存儲方式上并無不同。 * 靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。 **普通變量:** * 非靜態全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。 * 動態變量,屬于動態存儲類別,占動態存儲空間,函數調用結束后即釋放,不會保留上次函數運行的值。 ~~~ // 靜態局部變量:函數每次執行都會保留上次值 function static_test() { static $test = 0; $test++; echo $test; } static_test();// 第一次執行 輸出 1 static_test();// 第二次執行 輸出 2 // 普通局部變量:函數每次執行完都釋放 function test() { $test = 0; $test++; echo $test; } test();// 第一次執行 輸出 1 test();// 第二次執行 輸出 1 ~~~ > 把局部變量改變為靜態變量后是改變了它的存儲方式,即改變了它的生存期。 > 把全局變量改變為靜態變量后是改變了它的作用域,限制了它的使用范圍。 # 靜態方法與普通方法 **靜態方法:** * 靜態和公共、受保護、私有這3種屬性格式沒有關系, 他們并不是并列的 * 靜態方法不需要通過對象即可調用,所以偽變量 $this 在靜態方法中不可用 * 在同一個類中可通過self::關鍵字來調用靜態方法;不同類中,可以通過類的實例化對象來調用靜態方法或者通過`類名::靜態方法名`的方式調用。 * 類里面的靜態方法只能訪問類的靜態屬性,不能訪問類的非靜態成員。 * 從程序運行開始就實例生成內存 ,會高很多,但靜態內存是有限制的,實例太多會占用大量內存,且.靜態內存會常駐 * 適用于多次頻繁調用 **普通方法:** * 實例方法開始生成內存,執行效率相對于靜態方法會慢很多 * 普通方法不會常駐內存 * 可以通過$this,self關鍵字來調用,即普通方法需要對象去調用,而靜態方法不需要
                  <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>

                              哎呀哎呀视频在线观看