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)部類同時(shí)具有方法和類的所有權(quán)益
5喉刘、總結(jié)
? ? 為社么要使用成員內(nèi)部類瞧柔?
? ? ? ? 當(dāng)一個類中的成員過多的時(shí)候,再次對類中的成員進(jìn)行分組
? ? 特性睦裳,怎么創(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)用?
注意事項(xiàng):
? ? 內(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修飾
????????????????????? ? 因?yàn)楫?dāng)調(diào)用這個方法時(shí),局部變量如果沒有用final修飾,他的生命周期和方法的生命周期是一樣的,當(dāng)方法彈棧,這個局部變量也會消失,那么如果局部內(nèi)部類對象還沒有馬上消失想用這個局部變量,就沒有了,如果用final修飾會在類加載的時(shí)候進(jìn)入常量池,即使方法彈棧,常量池的常量還在,也可以繼續(xù)使用
4咕晋、匿名內(nèi)部類
? ? ? ? 定義? ?
? ? ? ? ? ? 匿名內(nèi)部類就是內(nèi)部類的簡寫形式,相當(dāng)于一個名字的子類
? ? ? ? ? ? 匿名內(nèi)部類用于定義接口i有的或者類的子類
? ? ? ? 使用
? ? ? ? ? ? ? ? 前題是必須存在一個類收奔,或者接口
? ? ? ? ? ? ? ? 這里的類可以是具體的類也可以是抽象類
? ? ? ? ? ? ? ? 相當(dāng)于是一個沒有名字的子類繼承或者實(shí)現(xiàn)一個類或接口捡需,然后重寫里面的的方法,本質(zhì)是一個繼承了該類或者實(shí)現(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)了和外部類相同的名稱的成員時(shí)棒卷,內(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)前方法使用的時(shí)候
? ? ? ? 局部內(nèi)部類使用局部變量的時(shí)候蜒什,變量要加上final關(guān)鍵字
? ??????1.8 版本之后, 編譯器如果發(fā)現(xiàn)局部內(nèi)部類中使用到了局部變量,會自動添加final關(guān)鍵字, 否則不添加, 為了提高內(nèi)存利用率和簡化書寫
4、匿名內(nèi)部類
? ? ? ? 當(dāng)一個類只使用一次的時(shí)候
? ? ? ? 局部內(nèi)部類有的特性疤估,匿名內(nèi)部類都有
? ??