2014-04-19 169 views
0

在java中說我們不能從靜態方法調用非靜態方法,這意味着什麼?我們總是可以調用非靜態方法frm靜態方法使用對象雖然..'請說明java中的靜態方法可以調用非靜態方法

+0

編寫代碼。然後*搜索*的錯誤消息。你會發現許多重複像http://stackoverflow.com/questions/5201895/calling-the-instance-of-a-static-method?rq=1,http://stackoverflow.com/questions/18375971/can- i-call-instance-method-of-a-static-member-from-within-static-context?rq = 1(或this)可能重複[背後的原因是什麼?非靜態方法不能被引用靜態上下文「?](http://stackoverflow.com/questions/290884/what-is-the-reason-behind-non-static-method-cannot-be-referenced-from-a-static) – user2864740

回答

0

要調用非靜態方法,您需要一個實例(對象) - 因爲這些方法屬於一個實例,並且通常只在實例的上下文中才有意義。

靜態方法不屬於一個實例 - 它們屬於該類。因此,有沒有必要先創建一個實例,你可以叫MyClass.doSomething()

void foo(){ 
    MyClass.doSomething(); 
} 

但是你可以從你提供的第一創建實例一個靜態方法調用非靜態方法。

static void bar(){ 
    MyObject o = new MyObject(); 
    o.doSomething(); 
} 
1

這裏是一個很好的一段代碼來說明這是什麼意思:試圖做的是報道不能做

class MyClass{ 

    static void func1(){ 
     func2(); //This will be an error 
    } 

    void func2(){ 
     System.out.println("Hello World!"); 
    } 

} 
相關問題