2012-12-01 70 views
0

我被告知,這是一種調用方法的方法:不同的調用方法?

如果您只寫入方法或屬性的名稱,Java將根據您的意思在名稱之前編寫一個猜測以下規則

  1. 如果方法不是一成不變的,它會試圖找到一個非靜態方法/屬性的名稱,然後尋找一個靜態方法/屬性
  2. 如果該方法是靜態的,它將嘗試僅找到一個靜態方法/屬性

任何人都可以給我一個這樣的例子嗎?我無法理解它的含義,因爲它在找到方法之前如何知道該方法是否是靜態方法,但它是基於它的非靜態方法還是靜態方法找到該方法?還是有兩種不同的方法,他們指的是什麼?

回答

2

這裏是在方法Ç會發生什麼適當註釋的例子,d和e:

class A { 
    // methods to be looked up 
    // a static method 
    static void a() {}; 
    // non-static method 
    void b() {}; 


    static void c() { 
     // valid reference to another static method 
     a();   
    } 

    static void d() { 
     // This would fail to compile as d is a static method 
     // but b is a non-static 
     b();   
    } 

    // non-static method would compile fine 
    void e() { 
     a(); // non-static method can find a static method 
     b(); // non-static method can find another non-static method 
    } 

} 
+0

+1。我想你已經理解了OP在告訴「如果方法是靜態的」時所說的:如果調用的方法是從同一個類的靜態方法調用的。 –

+0

謝謝,就是我在找的東西! – Nate