java中非靜態方法能調用靜態方法嗎?
首先直接回答你,在java非靜態方法可以調用靜態方法。
這個結論可以引伸為在非靜態方法中能訪問靜態方法、靜態成員變量和非靜態成員,而在靜態方法中只能訪問靜態成員,即靜態方法和靜態成員變量。
在java的基本概念中,類和對象是兩個截然不同又相互關聯的概念,類相當于模板,是抽象的,對象相當于實例,是具體的,所以兩者的聯系就是類實例化之后成為對象。靜態成員本身是歸屬于類的,也稱類成員,而實例成員歸屬于對象。在java的機制中,當類被加載的時候,實際上加載的是它的模板,就是這個類文件,這個時候只有它的靜態成員。而只有通過new關鍵字或反射方法調用了類的構造方法之后,才會生成類的實例對象,這個時候內存里才有了實例成員。
綜上,在內存里總是先有靜態成員,然后才有實例成員,所以在實例方法里調用靜態方法才有可能,反之上哪調用去?而且,實例方法歸屬于對象,想在靜態方法里調用的話也得先把對象實例化了才能調用呀,直接調用是取無根之水,不行吧。嘮叨這么多,希望對你有所幫助,助你知其然且知其所以然!
下一篇如果把地球縮小成乒乓球