內(nèi)部類

1、成員內(nèi)部類

? ? 1、定義:成員內(nèi)部類就是在類的內(nèi)部定義另一個類

? ? 2、使用????

? ? ? ? 內(nèi)部類可以直接訪問呢外部類的成員,包括私有

? ? ? ? ? ? 用法:外部類名。this。成員

? ? ? ? 外部類調(diào)用內(nèi)部類方法,必須先創(chuàng)建對象

? ? ? ? ? ? 用法:內(nèi)部類名 對象= 內(nèi)部類對象

? ? ? ? ? ? ? ? ? ? ? ? 內(nèi)部類 對象名 = new 內(nèi)部類()

別的類要訪問內(nèi)部類的成員,就必須要創(chuàng)建對象

? ? 外部類名。內(nèi)部類名? 對象名 = 外部類對象。內(nèi)部類對象

? ? 外部類。內(nèi)部類 對象名 = new 外部類()。new 內(nèi)部類()

3、內(nèi)部類的權(quán)限

? ? 內(nèi)部類的權(quán)限和成員方法一樣,可以有private,默認(rèn),protected,public

? ? 外部類只能是public和默認(rèn)的

? ? private效果等同于私有化方法,別的類無法直接調(diào)用,但是外部類可以調(diào)用,可以通過方法return回去

? ? 我們完全可以把內(nèi)部類當(dāng)作是一個類中的方法看待

? ? 內(nèi)部類同時具有方法和類的所有權(quán)益

5、總結(jié)

? ? 為社么要使用成員內(nèi)部類?

? ? ? ? 當(dāng)一個類中的成員過多的時候,再次對類中的成員進行分組

? ? 特性,怎么創(chuàng)建內(nèi)部類的對象

? ? ? ? 外部類對象。內(nèi)部類對象

? ? 內(nèi)部類的類名是什么

? ? ? ? ?外部類名。內(nèi)部類名


2、靜態(tài)內(nèi)部類

? ? 定義

? ? ? ? ? ? 使用static關(guān)鍵字的修飾內(nèi)部類

? ? 使用

? ? ? ? ? ? 調(diào)用靜態(tài)內(nèi)部類的非靜態(tài)方法

? ? ? ? ? ? ? ? ? ? 外部類名。內(nèi)部類名? 對象名 = new 外部類名。內(nèi)部類名();

? ? ? ? ? ? ? ? 調(diào)用靜態(tài)內(nèi)部類內(nèi)部的靜態(tài)方法

? ? ? ? ? ? ? ? ? ? ? ? 外部類名。內(nèi)部類名。方法()

? ? ? ? ? ? ? ?靜態(tài)內(nèi)部類調(diào)用外部類的非靜態(tài)方法

? ? ? ? ? ? ? ? ? ? 必須先new出外部類然后才可以調(diào)用?


注意事項:

? ? 內(nèi)部類中如果有靜態(tài)方法,那么內(nèi)部類必須也是靜態(tài)的

? ? 內(nèi)部類是靜態(tài)的,并不意味著內(nèi)部類中的方法也要是靜態(tài)的,只是說明我們可以繞過外部類對象直接找到內(nèi)部類來使用


3、局部內(nèi)部類

? ? ? ? 定義

? ? ? ? ? ? 定義在類中的方法中的內(nèi)部類叫做局部內(nèi)部類

? ? ? ? 使用

? ? ? ? ? ? ? ?局部內(nèi)部類的作用范圍僅限于本方法中

? ? ? ? ? ? ? ? 局部內(nèi)部類在訪問它所在方法中的局部變量必須用final修飾

????????????????????? ? 因為當(dāng)調(diào)用這個方法時,局部變量如果沒有用final修飾,他的生命周期和方法的生命周期是一樣的,當(dāng)方法彈棧,這個局部變量也會消失,那么如果局部內(nèi)部類對象還沒有馬上消失想用這個局部變量,就沒有了,如果用final修飾會在類加載的時候進入常量池,即使方法彈棧,常量池的常量還在,也可以繼續(xù)使用

4、匿名內(nèi)部類

? ? ? ? 定義? ?

? ? ? ? ? ? 匿名內(nèi)部類就是內(nèi)部類的簡寫形式,相當(dāng)于一個名字的子類

? ? ? ? ? ? 匿名內(nèi)部類用于定義接口i有的或者類的子類

? ? ? ? 使用

? ? ? ? ? ? ? ? 前題是必須存在一個類,或者接口

? ? ? ? ? ? ? ? 這里的類可以是具體的類也可以是抽象類

? ? ? ? ? ? ? ? 相當(dāng)于是一個沒有名字的子類繼承或者實現(xiàn)一個類或接口,然后重寫里面的的方法,本質(zhì)是一個繼承了該類或者實現(xiàn)了該接口的匿名子類對象

? ? ? ? ? ? ? ? 多用于規(guī)則簡單,子類使用很少的接口應(yīng)用中

? ? ? ? 格式:

? ? ? ? ? ? ? ? ? ? new 類名或者接口名(){

? ? ? ? ? ? 重寫的方法

}


總結(jié)

1、成員內(nèi)部類

? ? ? ? 對類中的成員再次分組

? ? ? ? 分組完成后,內(nèi)部類中的成員沒有辦法直接調(diào)用了,必須先創(chuàng)建外部類對象

? ? ? ? 外部類對象。內(nèi)部類對象

? ? ? ? 內(nèi)部類成員之間相互調(diào)用的問題?

? ? ? ? 內(nèi)部類成員可以直接使用外部類的成員,外部類成員不能直接使用內(nèi)部類的成員,如果要使用,必須先創(chuàng)建對象

? ? ? ? 如果內(nèi)部類中出現(xiàn)了和外部類相同的名稱的成員時,內(nèi)部類非要調(diào)用外部類的同名成員,必須要使用? ? 外部類名。this。成員


2、靜態(tài)內(nèi)部類

? ? ? ? 成員內(nèi)部類的寫法造成了內(nèi)部類的靜態(tài)成員無法使用

? ? ? ? 將內(nèi)部類也變成靜態(tài)的

? ? ? ? 其他成員之間的調(diào)用遵循的是靜態(tài)的特性

3、局部內(nèi)部類

? ? ? ? 當(dāng)一個類只在當(dāng)前方法使用的時候

? ? ? ? 局部內(nèi)部類使用局部變量的時候,變量要加上final關(guān)鍵字

? ??????1.8 版本之后, 編譯器如果發(fā)現(xiàn)局部內(nèi)部類中使用到了局部變量,會自動添加final關(guān)鍵字, 否則不添加, 為了提高內(nèi)存利用率和簡化書寫

4、匿名內(nèi)部類

? ? ? ? 當(dāng)一個類只使用一次的時候

? ? ? ? 局部內(nèi)部類有的特性,匿名內(nèi)部類都有

? ??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容