更新時間:2020-09-29 來源:黑馬程序員 瀏覽量:
(1)問題分析:
考官主要相對static方法的考察,涉及到static關鍵詞考核,如抽象的(abstract)方法是否可同時是靜態的(static);static
可否用來修飾局部變量; 內部類與靜態內部類的區別;java中是否可以覆蓋(override) 一個private或者是static的方法。
(2)核心答案講解:
不可以。static方法是靜態方法,是屬于類的方法,非static方法是屬于對象的方法。因為非static方法是要與對象關聯在一起的,必須在創建出一個對象后,才可以通過這個對象調用非static方法;而static方法可以直接通過類名來調用,不需要創建對象。也就是說,在一個static方法被調用時,還可能沒有創建任何實例對象,此時如果從static內部發出對非static方法的調用,非static方法是無法關聯到對象的。
(3)問題擴展:
static表示“全局”或者“靜態”的意思,用來修飾成員變量和成員方法,也可以形成靜態static代碼塊。
static修飾的變量習慣稱為靜態變量,static修飾的方法稱為靜態方法,static修飾的代碼塊叫做靜態代碼塊。
static的意義在于方便在沒有創建對象的情況下來進行調用(方法/變量)。
“static方法就是沒有this的方法。在static方法內部不能調用非靜態方法,反過來是可以的。而且可以在沒有創建任何對象的前提下,僅僅通過類本身來調用static方法。這實際上正是static方法的主要用途。
(4)結合項目中使用:
1)在項目中,很多工具類會使用static定義方法 ,達到不用new對象直接類名.方法名直接調用,使用工具更方便,減少重復代碼的作用。例如:項目中的UUIDUtils
2)常見的單例模式
單例模式方法定義為靜態方法:達到不能用該類在其他地方創建對象,而是通過該類自身提供的方法訪問類中的那個自定義對象的目的。
猜你喜
java訪問級別介紹: private,protected,public和default的區別