首頁 >後端開發 >PHP問題 >php靜態方法和普通方法的差別是什麼

php靜態方法和普通方法的差別是什麼

青灯夜游
青灯夜游原創
2021-03-11 17:48:533074瀏覽

區別:靜態方法可以透過「類別名稱::方法名稱」直接呼叫;而普通方法需要建立一個實例,也就是new一個對象,然後透過「物件名稱->方法名稱」的方式來調用。靜態方法只能存取類別中的靜態成員;普通方法可以存取類別中的任何成員。

php靜態方法和普通方法的差別是什麼

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

靜態方法

  • #靜態的記憶體空間是固定的,相對來說更省資源。

  • 創實例的創一個實例就要開闢一個新內存,耗費資源靜態方法屬於類別所有,類別實例化前即可使用;

  • #靜態方法只能存取類別中的靜態成員;

  • static內部只能出現static變數和其他static方法!而且static方法還不能使用this等關鍵字,因為它是屬於整個類別;

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

普通方法

  • 可以存取類別中的任何成員, 因為靜態方法在類別實例化前就可以使用,而類別中的非靜態變數必須在實例化之後才能分配記憶體;

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

主要區別

  • #靜態方法在創建物件前就可以使用了,非靜態方法必須透過new出來的物件調用。

  • 靜態方法可以透過 類別名稱::方法名稱直接呼叫。普通方法需要建立一個實例,也就是new一個對象,然後透過對象名稱->方法名的方式來呼叫;靜態類別只能包含靜態成員,否則會拋出編譯錯誤;

  • #非靜態類別既可以包含非靜態成員也可以包含靜態成員靜態類別是不能實例化,之所以不能實例化,是因為靜態類別會導致C#編譯器將該類別同時標記為abstract和sealed,且編譯器不會在類型中產生一個實例的建構函數,導致靜態類別不能實例化;

  • #非靜態類別可以,並且靜態成員的存取只能透過類別來進行訪問,因為靜態成員是屬於類別的。

推薦學習:《PHP影片教學

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

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