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