更新時(shí)間:2021-10-18 來(lái)源:黑馬程序員 瀏覽量:
IT就到黑馬程序員.gif)
匿名內(nèi)部類是沒(méi)有名稱的內(nèi)部類。在Java中調(diào)用某個(gè)方法時(shí),如果該方法的參數(shù)是接口類型,除了可以傳人個(gè)接口實(shí)現(xiàn)類外,還可以使用實(shí)現(xiàn)接口的匿名內(nèi)部類作為參數(shù),在匿名內(nèi)部類中直接完成方法的實(shí)現(xiàn)。創(chuàng)建匿名內(nèi)部類的基本語(yǔ)法格式如下:
new父接口( ) {//匿名內(nèi)部類實(shí)現(xiàn)部分下面通過(guò)一個(gè)案例學(xué)習(xí)匿名內(nèi)部類的定義和使用,如文件4-23所示。interface Animal {
roid shout ();
public class Example23{
public static void main (String[] args) {
String name = “小花”;
animalShout (new Animal (){
@Override
public void shout() {
System.out.println (name+"喵喵.......") ;
}) ;
public static void animalShout (Animal an) {
an.shout );
}
}文件4-23的運(yùn)行結(jié)果如圖4-23所示。
部類.png)
圖4-23文件4-23的運(yùn)行結(jié)果
文件4-23中,第1~3行代碼創(chuàng)建了Animal接口;
第7~12行代碼是調(diào)用animalShout( )方法,將實(shí)現(xiàn)Animal接口的匿名內(nèi)部類作為animalShout( )方法的參數(shù),并在匿名內(nèi)部類中重寫Animal接口的shout( )方法。
需要注意的是,在文件4-23中的匿名內(nèi)部類中訪問(wèn)了局部變量name,而局部變量name并沒(méi)有使用final修飾符修飾,程序也沒(méi)有報(bào)錯(cuò)。這是JDK8的新增特性,允許在局部?jī)?nèi)部類、匿名內(nèi)部類中訪問(wèn)非final修飾的局部變量,而在JDK8之前,局部變量前必須加final修飾符,否則程序編譯時(shí)報(bào)錯(cuò)。
對(duì)于初學(xué)者而言,可能會(huì)覺(jué)得匿名內(nèi)部類的寫法比較難理解,下面分兩步介紹匿名內(nèi)部類的編寫,具體如下。
在調(diào)用animalShout()方法時(shí),在方法的參數(shù)位置寫上new Animal ( ) {},這相當(dāng)于創(chuàng)建了一個(gè)實(shí)例對(duì)象,并將對(duì)象作為參數(shù)傳animalShout( )方法。在new Animal( )后面有一對(duì)大括號(hào),表示創(chuàng)建的對(duì)象為Animal的子類實(shí)例,該子類是匿名的,具體代碼如下:
animalShout (new Animal () {}) ;(2)在大括號(hào)中編寫匿名子類的實(shí)現(xiàn)代碼,具體如下:
animalShout (new Animal ( ) {public void shoutSustem.out.println (“喵喵.....”);} });至此便完成了匿名內(nèi)部類的編寫。匿名內(nèi)部類是實(shí)現(xiàn)接口的種簡(jiǎn)便寫法,在程序中不定非要使用匿名內(nèi)部類。對(duì)于初學(xué)者而言,不要求完全掌握這種寫法,只需理解語(yǔ)法就可以。
猜你喜歡:
java培訓(xùn):Arrays.sort()的內(nèi)部排序機(jī)制
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19