匿名內部類是一種只需要使用一次的類,創建匿名內部類時會立即創建一個該類的實例,這個類的定義立即消失,匿名內部類不能重複使用。
匿名內部類的語法格式如下:
new 實現接口()| 父類構造器(實參列表)
{
......
}
匿名內部類必須實現一個接口,或繼承一個父類。
匿名內部類不用Class,他在定義時直接生成了他的對象,因爲匿名內部類沒有類名,所以匿名內部類不會有自己的構造器,因爲匿名內部類是一次性的,所以匿名內部類也不能是抽象類,他必須實現抽象父類和接口的所有抽象方法,在適當的時候也可以重寫父類的普通方法。eg:
abstract class AbstractClass//抽象類
{
public AbstractClass()
{
}
public abstract String a();
}
interface Interface//接口
{
public String a();
}
public class anonymous{
public void test(AbstractClass a, Interface i)
{
System.out.println(a.a());
System.out.println(i.a());
}
public static void main(String[] args)
{
AbstractClass a = new AbstractClass()//要將抽象方法都重寫完,不然將出現編譯錯誤
{
{//初始化快直接顯示
System.out.println("匿名內部類的初始化塊");
}
public String a()
{
return "重寫父類的抽象方法";
}
};
anonymous am = new anonymous();
am.test(a, new Interface()
{
public String a()
{
return "接口的抽象方法";
}
});
}
}
顯示結果爲:
匿名內部類的初始化塊
重寫父類的抽象方法
接口的抽象方法