您好,登錄后才能下訂單哦!
這篇文章主要介紹php中的靜態方法和非靜態方法有什么區別,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
區別:1、非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員;2、靜態方法在定義類的時候就已經裝載分配好了,非靜態方法在定義時沒有占用內存,只有實例化為對象時才會被分配內存。
php中的靜態方法和非靜態方法的區別
1、靜態方法屬于類所有,類實例化前即可使用。也就是不需要new一個對象就可以使用該對象的方法。比如object::fun1()這樣的格式;
2、非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員,不可以調用非靜態成員,但可以調非靜態方法(因為系統自動把非靜態方法轉化為靜態方法)
3、靜態方法在定義類的時候就已經裝載分配好了,非靜態方法在定義時沒有占用內存,只有實例化為對象時才會被分配內存
4、static內部只能出現static變量和其他static方法(即靜態方法不能調用非靜態屬性 。也不能使用self::調用非靜態屬性)!而且static方法中還不能使用this等關鍵字,因為它是屬于整個類。靜態方法內部調用其他靜態方法,可以使用self::方法名稱的形式來實現;
5、靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀;
6、靜態方法和靜態變量創建后始終使用同一塊內存,而使用實例的方式會創建多個內存。
主要區別:
靜態方法在創建對象前就可以使用了,非靜態方法必須通過new出來的對象調用。
靜態方法與實例方法在性能和占用內存上沒有明顯的區別,是否聲明為靜態方法需要從類型的非靜態字段、事件、面向對象擴展和多態這三方面來考慮。
總結:靜態的是不論實例化多少次結果最終只有一個,而動態的每次結果都不一樣。
以上就是php中的靜態方法和非靜態方法的區別是什么?的詳細內容,更多請關注億速云其它相關文章!
以上是php中的靜態方法和非靜態方法有什么區別的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。