1. 程式人生 > >一個static方法內可以呼叫非static方法嗎?

一個static方法內可以呼叫非static方法嗎?

不可以。
因為非 static 方法是要與物件關聯在一起的,必須建立一個物件後,才可以在該物件上進行方法呼叫,而 static 方法呼叫時不需要建立物件,可以直接呼叫。

也就是說,當一個 static 方法被呼叫時,可能還沒有建立任何例項物件,如果從一個 static 方法中發出對非 static 方法的呼叫,那個非 static 方法關聯到那個物件上的呢?這個邏輯無法成立,所以,一個 static 方法內部不能發出對非 static 方法的呼叫。

static 方法是靜態方法,是屬於類的方法,非 static 方法是屬於物件的方法,所以在 static 方法中想要呼叫非 static 方法,要先新建立一個物件,再有這個物件來呼叫非 static 方法。

本質是 jvm 載入順序約定的,載入 static 方法的時候非靜態方法還沒初始化,當然不能呼叫了。