2014-10-01 99 views
-1

爲什麼不需要參考變量「method1();」爲了從main調用靜態方法?調用不帶參考變量的靜態方法

public class MainClass { 
    public static void method1() { 
    System.out.println("Method1"); 
    } 
    public static void main(String[ ] args) { 
    method1(); 
    } 
} 

沒有實例化的對象變量這樣的非靜態方法:

MainClass var = new MainClass(); 
var.method1(); 
+0

它們都是靜態方法,在同一個聲明範圍內,我的意思是,你指出了*在**非靜態方法**中,你可以這樣調用* – kolossus 2014-10-01 20:44:04

+0

這是否與空間有關在內存中分配給靜態事件? – 2014-10-01 20:44:46

+1

靜態方法使用類定義進行加載,而不是綁定到類的實例 – kolossus 2014-10-01 20:46:05

回答

3

靜態成員(方法,字段)不屬於任何對象實例。存在靜態成員即使沒有創建對象實例。靜態成員共享所有對象實例。這就是爲什麼當你訪問靜態成員時,你不必使用任何對象實例。

對於您的情況:

var1.method1() = var2.method1() = var3.method1() = MainClass.method1() 

因爲他們呼籲相同的靜態成員實例。但建議您靜態地訪問靜態成員。

0

static membersclass member不是特定於對象,所以我們不需要對象。最好的例子是public static void main(String [] args)方法本身。