java內(nèi)部類的作用 靜態(tài)類和內(nèi)部類的區(qū)別是什么?
靜態(tài)類和內(nèi)部類的區(qū)別是什么?Java語言允許在類中重新定義類。這種在其他類中定義的類稱為內(nèi)部類。內(nèi)部類有四種:正則內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類和靜態(tài)嵌套類。1. 靜態(tài)內(nèi)部類定義了在類中定義的靜態(tài)內(nèi)部
靜態(tài)類和內(nèi)部類的區(qū)別是什么?
Java語言允許在類中重新定義類。這種在其他類中定義的類稱為內(nèi)部類。內(nèi)部類有四種:正則內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類和靜態(tài)嵌套類。
1. 靜態(tài)內(nèi)部類定義了在類中定義的靜態(tài)內(nèi)部類。除任何方法外,靜態(tài)內(nèi)部類只能訪問外部類的靜態(tài)成員。生成(新的)靜態(tài)內(nèi)部類不需要外部類成員:這就是靜態(tài)內(nèi)部類和成員內(nèi)部類之間的區(qū)別。靜態(tài)內(nèi)部類對象可以直接生成外部。內(nèi)部in=新外部。內(nèi)部();而不是生成外部類對象。這實(shí)際上使靜態(tài)內(nèi)部類成為頂級類。您可以定義私有靜態(tài)內(nèi)部類。
2. Java實(shí)現(xiàn)的靜態(tài)內(nèi)部類說明,將內(nèi)部類定義為靜態(tài)類與將其他類定義為靜態(tài)類基本相同,引用規(guī)則也基本相同。但具體細(xì)節(jié)還是大不相同。具體來說,要注意以下幾個方面。1) 通常,如果內(nèi)部類沒有定義為靜態(tài)內(nèi)部類,則在定義成員變量或成員方法時,不能將其定義為靜態(tài)成員變量和靜態(tài)成員方法。換句話說,不能在非靜態(tài)內(nèi)部類中聲明靜態(tài)成員。2) 一般來說,非靜態(tài)外部類可以自由訪問其外部類的成員變量和方法(包括聲明為private的方法),但如果內(nèi)部類聲明為靜態(tài),則在訪問自己的外部類時會受到許多限制。靜態(tài)內(nèi)部類無法訪問其外部類的非靜態(tài)成員變量和方法。3) 在類中創(chuàng)建非靜態(tài)成員內(nèi)部類時,有一個強(qiáng)制規(guī)則,即內(nèi)部類的實(shí)例必須綁定到外部類的實(shí)例。然后,要在外部類中定義靜態(tài)內(nèi)部類,不需要使用關(guān)鍵字new來創(chuàng)建內(nèi)部類的實(shí)例。也就是說,創(chuàng)建靜態(tài)類內(nèi)部對象時,不需要外部類的對象
3。靜態(tài)內(nèi)部類示例Java在實(shí)現(xiàn)LinkedList時使用以下內(nèi)部類:public class LinkedList
非靜態(tài)內(nèi)部類,通常用作閉包,主要傳遞一段代碼用于回調(diào)。靜態(tài)內(nèi)部類和頂級類之間沒有區(qū)別,但它被用作一種名稱空間。內(nèi)部類可以重用。匿名內(nèi)部類通常只使用一次。但是,如果代碼很長,為了美觀,可以將匿名內(nèi)部類轉(zhuǎn)換為內(nèi)部類。