匿名類是指沒有類名的內(nèi)部類,必 須在創(chuàng)建時使用 new 語句來聲明類。其語法形式如下:
new <類或接口>() {
// 類的主體
};
這種形式的 new 語句聲明一個新的匿名類,它對一個給定的類進(jìn)行擴(kuò)展,或者實現(xiàn)一個給定的接口。使用匿名類可使代碼更加簡潔、緊湊,模塊化程度更高。
匿名類有兩種實現(xiàn)方式:
繼承一個類,重寫其方法。
實現(xiàn)一個接口(可以是多個),實現(xiàn)其方法。
下面通過代碼來說明。
public class Out {
void show() {
System.out.println("調(diào)用 Out 類的 show() 方法");
}
}
public class TestAnonymousInterClass {
// 在這個方法中構(gòu)造一個匿名內(nèi)部類
private void show() {
Out anonyInter = new Out() {
// 獲取匿名內(nèi)部類的實例
void show() {
System.out.println("調(diào)用匿名類中的 show() 方法");
}
};
anonyInter.show();
}
public static void main(String[] args) {
TestAnonymousInterClass test = new TestAnonymousInterClass();
test.show();
}
}
程序的輸出結(jié)果如下:
調(diào)用匿名類中的 show() 方法
從輸出結(jié)果可以看出,匿名內(nèi)部類有自己的實現(xiàn)。
提示:匿名內(nèi)部類實現(xiàn)一個接口的方式與實現(xiàn)一個類的方式相同,這里不再贅述。
匿名類有如下特點:
1)匿名類和局部內(nèi)部類一樣,可以訪問外部類的所 有成員。如果匿名類位于一個方法中,則匿名類只能訪問方法中 final 類型的局部變量和參數(shù)。
public static void main(String[] args) {
int a = 10;
final int b = 10;
Out anonyInter = new Out() {
void show() {
// System.out.println("調(diào)用了匿名類的 show() 方法"+a); // 編譯出錯
填寫下面表單即可預(yù)約申請免費試聽java課程!害怕學(xué)不會?助教陪讀,隨時解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國推薦就業(yè)!
System.out.println("調(diào)用了匿名類的 show() 方法"+b); // 編譯通過
}
};
anonyInter.show();
}
從 Java 8 開始添加了 Effectively final 功能,在 Java 8 及以后的版本中代碼第 6 行不會出現(xiàn)編譯錯誤,詳情可點擊《Java8新特性之Effectively final》進(jìn)行學(xué)習(xí)。
2)匿名類中允許使用非靜態(tài)代碼塊進(jìn)行成員初始化操作。
Out anonyInter = new Out() {
int i; { // 非靜態(tài)代碼塊
i = 10; //成員初始化
}
public void show() {
System.out.println("調(diào)用了匿名類的 show() 方法"+i);
}
};
3)匿名類的非靜態(tài)代碼塊會在父類的構(gòu)造方法之后被執(zhí)行。
下一篇: 沒有了
初級會計職稱中級會計職稱經(jīng)濟(jì)師注冊會計師證券從業(yè)銀行從業(yè)會計實操統(tǒng)計師審計師高級會計師基金從業(yè)資格稅務(wù)師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價格鑒證師統(tǒng)計資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產(chǎn)估價師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會工作者司法考試職稱計算機(jī)營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護(hù)士資格證初級護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗技師臨床醫(yī)學(xué)理論中醫(yī)理論