靜態方法實際是類的方法,而不是關于對象的方法。所以不是“可以不通過對象調用方法”,而是恰恰應該使用類來調用,而且鼓勵這種寫法,而不是通過對象調用。即:靜態方法不和對象相關,而是僅僅和類相關。為啥呢?解釋是這樣的:在一般的類中定義的方法中,非靜態類其實不僅僅有他們后面括號里面的顯式參數(比如 public int getField(String param1, int param2)這個方法,顯式參數是param1和param2),還包括一個隱式參數:即這個調用方法的對象(即this)。而靜態方法,則沒有這個隱式的參數,僅僅就只有括號中的顯式參數。既然是因為靜態方法不和對象關聯,那么它就只能用同樣僅僅和類關聯而不和對象關聯的實例域,畢竟不是靜態的實例域在不同對象中基本上都是不同的嘛。
2017-08-26
因為main方法就是靜態的,public static void main(String[] args),里面有static,?靜態方法中可以直接調用同類中的靜態成員。
2017-08-19
找到 ?Java中的static使用之靜態方法 ?這節課中
有這樣一句話, 靜態方法中可以直接調用同類中的靜態成員。 但不能直接調用非靜態成員?
上圖:
2017-08-19
靜態方法實際是類的方法,而不是關于對象的方法。所以不是“可以不通過對象調用方法”,而是恰恰應該使用類來調用,而且鼓勵這種寫法,而不是通過對象調用。即:靜態方法不和對象相關,而是僅僅和類相關。為啥呢?解釋是這樣的:在一般的類中定義的方法中,非靜態類其實不僅僅有他們后面括號里面的顯式參數(比如 public int getField(String param1, int param2)這個方法,顯式參數是param1和param2),還包括一個隱式參數:即這個調用方法的對象(即this)。而靜態方法,則沒有這個隱式的參數,僅僅就只有括號中的顯式參數。既然是因為靜態方法不和對象關聯,那么它就只能用同樣僅僅和類關聯而不和對象關聯的實例域,畢竟不是靜態的實例域在不同對象中基本上都是不同的嘛。