java構(gòu)造方法與靜態(tài)方法順序 java聲明為static的方法不能被重載?
java聲明為static的方法不能被重載?靜態(tài)方法屬于這個(gè)類,而不屬于對(duì)象。沒(méi)有說(shuō)繼承不繼承。覆蓋和重寫(xiě)也是對(duì)象的方法,不是靜態(tài)方法。你問(wèn)的第二個(gè)問(wèn)題叫做 "隱藏 "。 "方法被聲明為靜態(tài)的,但是靜
java聲明為static的方法不能被重載?
靜態(tài)方法屬于這個(gè)類,而不屬于對(duì)象。沒(méi)有說(shuō)繼承不繼承。覆蓋和重寫(xiě)也是對(duì)象的方法,不是靜態(tài)方法。你問(wèn)的第二個(gè)問(wèn)題叫做 "隱藏 "。 "方法被聲明為靜態(tài)的,但是靜態(tài)方法不能被覆蓋;它們只能被隱藏起來(lái)。為了避免這種混亂,永遠(yuǎn)不要隱藏靜態(tài)方法。即使在子類中重用超類中靜態(tài)方法的名字,也不會(huì)給你帶來(lái)什么新的東西,反而會(huì)失去很多東西。 "(——《java解惑》)
java中非靜態(tài)方法能調(diào)用靜態(tài)方法嗎?
首先直接回答你,靜態(tài)方法可以在java非靜態(tài)方法中調(diào)用。
這個(gè)結(jié)論可以推廣到,在非靜態(tài)方法中可以訪問(wèn)靜態(tài)方法、靜態(tài)成員變量和非靜態(tài)成員,而在靜態(tài)方法中只能訪問(wèn)靜態(tài)成員,即靜態(tài)方法和靜態(tài)成員變量。
在java的基本概念中,類和對(duì)象是兩個(gè)完全不同但又相互聯(lián)系的概念。類相當(dāng)于模板,是抽象的,對(duì)象相當(dāng)于實(shí)例,是具體的,所以兩者之間的聯(lián)系是類實(shí)例化后變成了對(duì)象。靜態(tài)成員本身屬于類,也稱為類成員,而實(shí)例成員屬于對(duì)象。在java機(jī)制中,加載一個(gè)類的時(shí)候,實(shí)際上加載的是它的模板,也就是這個(gè)類文件,此時(shí)只有它的靜態(tài)成員。只有通過(guò)n
在java中為什么不全部使用static方法?
如果使用所有靜態(tài)方法,那么靜態(tài)方法只能訪問(wèn)靜態(tài)成員。然后整個(gè)類只有靜態(tài)成員和靜態(tài)方法,也就是說(shuō)對(duì)象消失了。不會(huì)有繼承和多態(tài),這將顛覆整個(gè)面向?qū)ο缶幊痰氖澜纭?/p>
靜態(tài)成員變量和靜態(tài)修改的靜態(tài)成員方法存在于數(shù)據(jù)共享區(qū),即數(shù)據(jù)內(nèi)存中,而非靜態(tài)的修改對(duì)象構(gòu)建在堆內(nèi)存中,這樣就不存在面向?qū)ο蟮臄?shù)據(jù)封裝,從而打破了面向?qū)ο蠓庋b、繼承和多態(tài)這三個(gè)核心。
這意味著你已經(jīng)從面向?qū)ο缶幊掏嘶矫嫦蜻^(guò)程編程了。
這樣,你扭曲的物體可以 不可重復(fù)使用。
所以你要想好什么時(shí)候用static修改成員,什么時(shí)候用static修改成員,才不會(huì)脫褲子放屁。。當(dāng)屬于同一個(gè)類的所有對(duì)象都有共享數(shù)據(jù)時(shí),有必要用static修飾存儲(chǔ)這些共享數(shù)據(jù)的成員。當(dāng)沒(méi)有對(duì)函數(shù)內(nèi)部非靜態(tài)成員的訪問(wèn)時(shí),需要訪問(wèn)對(duì)象特有的數(shù)據(jù),那么函數(shù)就定義為靜態(tài),然后使用靜態(tài)。
對(duì)了,spring在Java中誕生后,配置類可以解決數(shù)據(jù)共享的問(wèn)題,靜態(tài)方法就再也沒(méi)有用過(guò)了。好像沒(méi)有忘記這個(gè)關(guān)鍵詞解決不了的問(wèn)題。