首頁  >  文章  >  後端開發  >  php中的靜態方法和非靜態方法的差別是什麼?

php中的靜態方法和非靜態方法的差別是什麼?

青灯夜游
青灯夜游原創
2020-11-05 15:56:054813瀏覽

區別:1、非靜態方法可以存取類別中的任何成員,靜態方法只能存取類別中的靜態成員;2、靜態方法在定義類別的時候就已經裝載分配好了,非靜態方法在定義時沒有佔用內存,只有實例化為物件時才會被分配記憶體。

php中的靜態方法和非靜態方法的差別是什麼?

推薦:《PHP影片教學

php中的靜態方法與非靜態方法的差異

1、靜態方法屬於類別所有,類別實例化前即可使用。也就是不需要new一個物件就可以使用該物件的方法。例如object::fun1()這樣的格式;

2、非靜態方法可以存取類別中的任何成員,靜態方法只能存取類別中的靜態成員,不可以呼叫非靜態成員,但可以調非靜態方法(因為系統自動把非靜態方法轉化為靜態方法)

3、靜態方法在定義類別的時候就已經裝載分配好了,非靜態方法在定義時沒有佔用內存,只有實例化為物件時才會被指派記憶體

4、static內部只能出現static變數和其他static方法(即靜態方法不能呼叫非靜態屬性。也不能使用self::呼叫非靜態屬性) !而且static方法還不能使用this等關鍵字,因為它屬於整個類別。靜態方法內部呼叫其他靜態方法,可以使用self::方法名稱的形式來實現;

5、靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀;

6、靜態方法和靜態變數創建後始終使用同一塊內存,而使用實例的方式會創建多個內存。

主要差異:

靜態方法在建立物件前就可以使用了,非靜態方法必須透過new出來的物件呼叫。

靜態方法與實例方法在效能和佔用記憶體上沒有明顯的區別,是否聲明為靜態方法需要從類型的非靜態欄位、事件、物件導向擴充和多態這三方面來考慮。

總結:靜態的是不論實例化多少次結果最終只有一個,而動態的每次結果都不一樣。

更多程式相關知識,請造訪:程式設計教學! !

以上是php中的靜態方法和非靜態方法的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn