在本教程中,您將借助示例學習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)建匿名類的對象。
匿名類也有助于我們使代碼簡潔。