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