首頁技術(shù)文章正文

static方法內(nèi)部是否能調(diào)用非static方法【Java面試】

更新時間:2020-09-29 來源:黑馬程序員 瀏覽量:

(1)問題分析:

考官主要相對static方法的考察,涉及到static關(guān)鍵詞考核,如抽象的(abstract)方法是否可同時是靜態(tài)的(static);static 可否用來修飾局部變量; 內(nèi)部類與靜態(tài)內(nèi)部類的區(qū)別;java中是否可以覆蓋(override) 一個private或者是static的方法。

(2)核心答案講解:

不可以。static方法是靜態(tài)方法,是屬于類的方法,非static方法是屬于對象的方法。因?yàn)榉莝tatic方法是要與對象關(guān)聯(lián)在一起的,必須在創(chuàng)建出一個對象后,才可以通過這個對象調(diào)用非static方法;而static方法可以直接通過類名來調(diào)用,不需要創(chuàng)建對象。也就是說,在一個static方法被調(diào)用時,還可能沒有創(chuàng)建任何實(shí)例對象,此時如果從static內(nèi)部發(fā)出對非static方法的調(diào)用,非static方法是無法關(guān)聯(lián)到對象的。

(3)問題擴(kuò)展:

static表示“全局”或者“靜態(tài)”的意思,用來修飾成員變量和成員方法,也可以形成靜態(tài)static代碼塊。

static修飾的變量習(xí)慣稱為靜態(tài)變量,static修飾的方法稱為靜態(tài)方法,static修飾的代碼塊叫做靜態(tài)代碼塊。

static的意義在于方便在沒有創(chuàng)建對象的情況下來進(jìn)行調(diào)用(方法/變量)。

“static方法就是沒有this的方法。在static方法內(nèi)部不能調(diào)用非靜態(tài)方法,反過來是可以的。而且可以在沒有創(chuàng)建任何對象的前提下,僅僅通過類本身來調(diào)用static方法。這實(shí)際上正是static方法的主要用途。

(4)結(jié)合項(xiàng)目中使用:

1)在項(xiàng)目中,很多工具類會使用static定義方法 ,達(dá)到不用new對象直接類名.方法名直接調(diào)用,使用工具更方便,減少重復(fù)代碼的作用。例如:項(xiàng)目中的UUIDUtils

2)常見的單例模式

單例模式方法定義為靜態(tài)方法:達(dá)到不能用該類在其他地方創(chuàng)建對象,而是通過該類自身提供的方法訪問類中的那個自定義對象的目的。

猜你喜

Java異常處理機(jī)制的原理和應(yīng)用 

java訪問級別介紹: private,protected,public和default的區(qū)別 

Java圖形界面編程教程 

單例模式介紹:懶漢和餓漢代碼

Java高級軟件工程師課程 



分享到:
在線咨詢 我要報名
和我們在線交談!