普通方法可以調(diào)用靜態(tài)方法嗎 靜態(tài)方法可以直接調(diào)用實(shí)例方法么?
靜態(tài)方法可以直接調(diào)用實(shí)例方法么? packagecom.text3//靜態(tài)方法不能直接調(diào)用實(shí)例方法和變量,但可以間接調(diào)用(即在靜態(tài)方法中創(chuàng)建類的實(shí)例,然后調(diào)用)classDemo。12{publics
靜態(tài)方法可以直接調(diào)用實(shí)例方法么?
packagecom.text3//靜態(tài)方法不能直接調(diào)用實(shí)例方法和變量,但可以間接調(diào)用(即在靜態(tài)方法中創(chuàng)建類的實(shí)例,然后調(diào)用)classDemo。12{publicstaticvoidmain(String[]args){Circlec=newCircle()Demou12d=newDemou12()method1()//此處報(bào)告錯(cuò)誤。靜態(tài)方法不能直接調(diào)用非靜態(tài)方法。D.method1()//間接調(diào)用,無(wú)錯(cuò)誤c.setradius(5.0)//間接調(diào)用,無(wú)錯(cuò)誤}publicvoid method1(){method2()}publicstaticvoid method2(){circle C=newcircle()系統(tǒng)輸出打?。ā皐hatisradius”c.getRadius())}類圓{privateBoolRadiusPublicDoubleGetRadius(){returnradius}publicvoidsetRadius(doubleradius){this.radius=半徑}}
同一個(gè)類中靜態(tài)方法為什么不能調(diào)用實(shí)例變量?
不,因?yàn)镴ava中的靜態(tài)內(nèi)容是類級(jí)別的,即也就是說(shuō),可以用類名或任何對(duì)象名訪問(wèn)它們。無(wú)論以何種形式訪問(wèn),它們都是同一事物。一般來(lái)說(shuō),成員變量是指對(duì)象層次,即每個(gè)對(duì)象所擁有的成員變量是獨(dú)立的、不同的,屬于對(duì)象本身。與訪問(wèn)范圍相比,它更為靜態(tài),靜態(tài)可以被任何對(duì)象訪問(wèn)并且是相同的,成員變量是每個(gè)對(duì)象所擁有的。所以,為什么“靜態(tài)方法不能調(diào)用類成員變量”是因?yàn)橐L問(wèn)成員變量,必須有一個(gè)“實(shí)例化對(duì)象”。除非在靜態(tài)方法中創(chuàng)建當(dāng)前類的實(shí)例對(duì)象,否則不能直接調(diào)用成員變量,因?yàn)樗恢莱蓡T變量屬于哪個(gè)實(shí)例對(duì)象。在成員方法中,可以確定屬于該成員的所有變量和方法屬于同一個(gè)對(duì)象,這可以用來(lái)表示當(dāng)前對(duì)象。