java靜態方法中不能引用非靜態變量

由於咱們知道靜態的方法能夠在沒有建立實例時使用,而申明爲非靜態的成員變量是一個對象屬性,它只有在對象存在時引用,所以若是在對象未建立實例時咱們在靜態方法中調用了非靜態成員方法天然是非法的,因此編譯器會在這種時候給各錯誤. 

簡單說來,靜態方法能夠不用建立對象就調用,非靜態方法必須有了對象的實例才能調用.所以想在靜態方法中引用非靜態方法是不可能的,由於它究竟引用的是哪一個對象的非靜態方法呢?編譯器不可能給出答案,由於沒有對象啊,因此要報錯 函數

class HelloWorld  this


int a1 = 6; 

public static void main(String[] args) 

  
   System.out.print(a1);    
/**   成員變量不能直接調用  ( 沒法從靜態上下文中引用非靜態變量   a1  )             
   */ 



spa


只要不是static修飾的方法,必需要經過對象進行引用。在非靜態方法裏,可能省略了(this)。在靜態的方法裏,看看有沒有你這個方法所在類的對象。沒有確定報錯。 指針

樓主,你好。由於靜態方法的調用不是經過實例對象進行的,因此在靜態方法中沒有this指針,不能訪問所屬類的非靜態變量和方法,只能訪問方法體內的局部變量、本身的參數和靜態變量。因此你在在static的主函數裏調用非static的方法時確定報錯。因此你把方法放到另外一個類,建立對象再調用,不會出錯,由於你這個方法不是靜態的,即不是屬於類的,而是屬於具體的一個實例對象的,用對象調用那固然不會錯咯!
對象

只要記住這一點:
用statci修飾的成員是屬於類的,在static的方法裏能夠用類名直接調用;
不用statci修飾的成員是屬於具體實例對象的,須要用對象名調用,且在static的方法裏不能夠調用。

ci

相關文章
相關標籤/搜索