非靜態(tài)方法可以調(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)用,無錯(cuò)誤c.setradius(5.0)//間接調(diào)用,無錯(cuò)誤}publicvoid method1(){method2()}publicstaticvoid method2(){circle C=newcircle()系統(tǒng)輸出打印(“whatisradius”c.getRadius())}類圓{privateBoolRadiusPublicDoubleGetRadius(){returnradius}publicvoidsetRadius(doubleradius){this.radius=半徑}}
可以通過實(shí)例對象訪問靜態(tài)方法嗎?
靜態(tài)修改方法可以通過類或?qū)嵗荒苁褂么艘?。但是,建議使用類來調(diào)用靜態(tài)方法,這樣代碼就更清晰了。
同一個(gè)類中靜態(tài)方法為什么不能調(diào)用實(shí)例變量?
不,因?yàn)镴ava中的靜態(tài)內(nèi)容是類級別的,也就是說,可以用類名或任何對象名訪問它們。無論以何種形式訪問,它們都是同一事物。一般來說,成員變量是指對象層次,即每個(gè)對象所擁有的成員變量是獨(dú)立的、不同的,屬于對象本身。與訪問范圍相比,它更為靜態(tài),靜態(tài)可以被任何對象訪問并且是相同的,成員變量是每個(gè)對象所擁有的。所以,為什么“靜態(tài)方法不能調(diào)用類成員變量”是因?yàn)橐L問成員變量,必須有一個(gè)“實(shí)例化對象”。除非在靜態(tài)方法中創(chuàng)建當(dāng)前類的實(shí)例對象,否則不能直接調(diào)用成員變量,因?yàn)樗恢莱蓡T變量屬于哪個(gè)實(shí)例對象。在成員方法中,可以確定屬于該成員的所有變量和方法屬于同一個(gè)對象,這可以用來表示當(dāng)前對象。