區別:1、非靜態方法可以存取類別中的任何成員,靜態方法只能存取類別中的靜態成員;2、靜態方法在定義類別的時候就已經裝載分配好了,非靜態方法在定義時沒有佔用內存,只有實例化為物件時才會被分配記憶體。
推薦:《PHP影片教學》
php中的靜態方法與非靜態方法的差異
1、靜態方法屬於類別所有,類別實例化前即可使用。也就是不需要new一個物件就可以使用該物件的方法。例如object::fun1()這樣的格式;
2、非靜態方法可以存取類別中的任何成員,靜態方法只能存取類別中的靜態成員,不可以呼叫非靜態成員,但可以調非靜態方法(因為系統自動把非靜態方法轉化為靜態方法)
3、靜態方法在定義類別的時候就已經裝載分配好了,非靜態方法在定義時沒有佔用內存,只有實例化為物件時才會被指派記憶體
4、static內部只能出現static變數和其他static方法(即靜態方法不能呼叫非靜態屬性。也不能使用self::呼叫非靜態屬性) !而且static方法還不能使用this等關鍵字,因為它屬於整個類別。靜態方法內部呼叫其他靜態方法,可以使用self::方法名稱的形式來實現;
5、靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀;
6、靜態方法和靜態變數創建後始終使用同一塊內存,而使用實例的方式會創建多個內存。
主要差異:
靜態方法在建立物件前就可以使用了,非靜態方法必須透過new出來的物件呼叫。
靜態方法與實例方法在效能和佔用記憶體上沒有明顯的區別,是否聲明為靜態方法需要從類型的非靜態欄位、事件、物件導向擴充和多態這三方面來考慮。
總結:靜態的是不論實例化多少次結果最終只有一個,而動態的每次結果都不一樣。
更多程式相關知識,請造訪:程式設計教學! !
以上是php中的靜態方法和非靜態方法的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!