在本教程中,您將借助示例學(xué)習(xí)Java中的匿名類。
在Java中,一個(gè)類可以包含另一個(gè)稱為嵌套類的類??梢栽诓惶峁┤魏蚊Q的情況下創(chuàng)建嵌套類。
沒有任何名稱的嵌套類稱為匿名類。
必須在另一個(gè)類中定義一個(gè)匿名類。因此,它也被稱為匿名內(nèi)部類。其語法為:
class outerClass { //定義匿名類 object1 = new Type(parameterList) { //匿名類的主體 }; }
匿名類通常繼承子類或?qū)崿F(xiàn)接口。
在這里,類型(Type)可以是
匿名類繼承的超類
匿名類實(shí)現(xiàn)的接口
上面的代碼在運(yùn)行時(shí)創(chuàng)建了一個(gè)匿名類的對(duì)象object1。
注意:匿名類在表達(dá)式內(nèi)定義。因此,在匿名類的末尾使用分號(hào)來表示表達(dá)式的末尾。
class Polygon { public void display() { System.out.println("在Polygon類內(nèi)"); } } class AnonymousDemo { public void createClass() { //創(chuàng)建匿名類,繼承類Polygon Polygon p1 = new Polygon() { public void display() { System.out.println("匿名類的內(nèi)部。"); } }; p1.display(); } } class Main { public static void main(String[] args) { AnonymousDemo an = new AnonymousDemo(); an.createClass(); } }
輸出結(jié)果
匿名類的內(nèi)部。
在上面的示例中,我們創(chuàng)建了一個(gè)類Polygon。它只有一個(gè)方法display()。
然后,我們創(chuàng)建了一個(gè)匿名類,該類繼承類Polygon并重寫了display()方法。
當(dāng)我們運(yùn)行該程序時(shí),將創(chuàng)建一個(gè)匿名類的對(duì)象p1。然后該對(duì)象調(diào)用匿名類的display()方法。
interface Polygon { public void display(); } class AnonymousDemo { public void createClass() { //匿名類實(shí)現(xiàn)接口 Polygon p1 = new Polygon() { public void display() { System.out.println("匿名類的內(nèi)部。"); } }; p1.display(); } } class Main { public static void main(String[] args) { AnonymousDemo an = new AnonymousDemo(); an.createClass(); } }
輸出結(jié)果
匿名類的內(nèi)部。
在上面的示例中,我們創(chuàng)建了一個(gè)實(shí)現(xiàn)該P(yáng)olygon接口的匿名類。
在匿名類中,只要需要就創(chuàng)建對(duì)象。即,創(chuàng)建對(duì)象以執(zhí)行某些特定任務(wù)。例如,
Object = new Example() { public void display() { System.out.println("匿名類重寫display()方法。"); } };
在這里,當(dāng)我們需要重寫display()方法時(shí),將動(dòng)態(tài)創(chuàng)建匿名類的對(duì)象。
匿名類也有助于我們使代碼簡(jiǎn)潔。