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

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

更新時(shí)間:2020-09-29 來(lái)源:黑馬程序員 瀏覽量:

(1)問(wèn)題分析:

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

(2)核心答案講解:

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

(3)問(wèn)題擴(kuò)展:

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

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

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

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

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

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

2)常見(jiàn)的單例模式

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

猜你喜

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

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

Java圖形界面編程教程 

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

Java高級(jí)軟件工程師課程 



分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!