1 回答
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
靜態(tài)方法和非靜態(tài)方法的區(qū)別總結(jié)如下:
1、靜態(tài)方法屬于類(lèi)所有,類(lèi)實(shí)例化前即可使用。也就是不需要new一個(gè)對(duì)象就可以使用該對(duì)象的方法。比如object::fun1()這樣的格式;
2、非靜態(tài)方法可以訪問(wèn)類(lèi)中的任何成員,靜態(tài)方法只能訪問(wèn)類(lèi)中的靜態(tài)成員;
3、因?yàn)殪o態(tài)方法在類(lèi)實(shí)例化前就可以使用,而類(lèi)中的非靜態(tài)變量必須在實(shí)例化之后才能分配內(nèi)存;
4、static內(nèi)部只能出現(xiàn)static變量和其他static方法(即靜態(tài)方法不能調(diào)用非靜態(tài)屬性 。也不能使用self::調(diào)用非靜態(tài)屬性)!而且static方法中還不能使用this等關(guān)鍵字,因?yàn)樗菍儆谡麄€(gè)類(lèi)。靜態(tài)方法內(nèi)部調(diào)用其他靜態(tài)方法,可以使用self::方法名稱(chēng)的形式來(lái)實(shí)現(xiàn);
5、靜態(tài)方法效率上要比實(shí)例化高,靜態(tài)方法的缺點(diǎn)是不自動(dòng)進(jìn)行銷(xiāo)毀,而實(shí)例化的則可以做銷(xiāo)毀;
6、靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內(nèi)存,而使用實(shí)例的方式會(huì)創(chuàng)建多個(gè)內(nèi)存。
主要區(qū)別:
靜態(tài)方法在創(chuàng)建對(duì)象前就可以使用了,非靜態(tài)方法必須通過(guò)new出來(lái)的對(duì)象調(diào)用。
靜態(tài)方法與實(shí)例方法在性能和占用內(nèi)存上沒(méi)有明顯的區(qū)別,是否聲明為靜態(tài)方法需要從類(lèi)型的非靜態(tài)字段、事件、面向?qū)ο髷U(kuò)展和多態(tài)這三方面來(lái)考慮。
總結(jié):靜態(tài)的是不論實(shí)例化多少次結(jié)果最終只有一個(gè),而動(dòng)態(tài)的每次結(jié)果都不一樣。
- 1 回答
- 0 關(guān)注
- 2310 瀏覽
添加回答
舉報(bào)
