在java中為什么不全部使用static方法?
如果全部使用了static方法,那么靜態(tài)的方法只能訪問(wèn)靜態(tài)的成員。那么整個(gè)類(lèi)都只有靜態(tài)成員和靜態(tài)方法,這就意味著對(duì)象消失了。就不存在繼承和多態(tài)了,也就顛覆了整個(gè)面向?qū)ο蟪绦蛟O(shè)計(jì)的世界。
static修飾的靜態(tài)成員變量和靜態(tài)成員方法,都是存在數(shù)據(jù)共享區(qū)的,即data內(nèi)存中,而非static修飾的對(duì)象是建立的heap堆內(nèi)存中的,這樣面向?qū)ο蟮臄?shù)據(jù)封裝也就不存在了,藉此面向?qū)ο蟮姆庋b,繼承和多態(tài)三大核心全部被打破。
這也就意味著你由面向?qū)ο缶幊掏嘶亓嗣嫦蜻^(guò)程編程。
這樣你扭出來(lái)的對(duì)象是不能復(fù)用的。
所以你要思考什么時(shí)候使用static修飾成員,什么時(shí)候使用static修飾方法,這樣做才不至于脫褲子放屁。當(dāng)屬于同一類(lèi)的所有對(duì)象出現(xiàn)共享數(shù)據(jù)時(shí),就需要將存儲(chǔ)這個(gè)共享數(shù)據(jù)的成員用static修飾。當(dāng)功能內(nèi)部沒(méi)有訪問(wèn)到非靜態(tài)成員時(shí),需要訪問(wèn)對(duì)象特有的數(shù)據(jù),那么該功能才定義為靜態(tài),這時(shí)候才使用static。
補(bǔ)充一句,Java在有了spring之后,配置類(lèi)能夠解決共享數(shù)據(jù)的問(wèn)題,再?zèng)]有使用過(guò)static方法,貌似忘了這個(gè)關(guān)鍵字也沒(méi)有解決不了的問(wèn)題。