區(qū)別:靜態(tài)方法可以通過“類名::方法名”直接調用;而普通方法需要創(chuàng)建一個實例,也就是new一個對象,然后通過“對象名->方法名”的方式來調用。靜態(tài)方法只能訪問類中的靜態(tài)成員;普通方法可以訪問類中的任何成員。
本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦
靜態(tài)方法
-
靜態(tài)的內存空間是固定的,相對來說更省資源。
-
創(chuàng)實例的創(chuàng)一個實例就要開辟一個新內存,耗費資源 靜態(tài)方法屬于類所有,類實例化前即可使用;
-
靜態(tài)方法只能訪問類中的靜態(tài)成員;
-
static內部只能出現(xiàn)static變量和其他static方法!而且static方法中還不能使用this等關鍵字,因為它是屬于整個類;
-
靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內存,而使用實例的方式會創(chuàng)建多個內存。
普通方法
-
可以訪問類中的任何成員, 因為靜態(tài)方法在類實例化前就可以使用,而類中的非靜態(tài)變量必須在實例化之后才能分配內存;
-
靜態(tài)方法效率上要比實例化高,靜態(tài)方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀;
主要區(qū)別
-
靜態(tài)方法在創(chuàng)建對象前就可以使用了,非靜態(tài)方法必須通過new出來的對象調用。
-
靜態(tài)方法可以通過 類名::方法名直接調用。普通方法需要創(chuàng)建一個實例,也就是new一個對象,然后通過 對象名->方法名的方式來調用;靜態(tài)類只能包含靜態(tài)成員,否則會拋出編譯錯誤;
-
非靜態(tài)類既可以包含非靜態(tài)成員也可以包含靜態(tài)成員 靜態(tài)類是不能實例化,之所以不能實例化,是因為靜態(tài)類會導致C#編譯器將該類同時標記為abstract和sealed,并且編譯器不會在類型中 生成一個實例的構造函數(shù),從而導致靜態(tài)類不能實例化;
-
非靜態(tài)類可以,并且靜態(tài)成員的訪問只能通過類來進行訪問,因為靜態(tài)成員是屬于類的。
推薦學習:《PHP視頻教程》