一.匿名內部類適合創建那種只需要一次使用的類(命令模式)
(1)定義匿名內部類的格式:
new 實現接口( ) |父類構造器(實參列表)
{
//匿名內部類的實體部分
}
(2)匿名內部類的規則
1.匿名內部類不能是抽象類,因為系統在創建匿名內部類時,會立即創建匿名內部類的對象.
2.匿名內部類不能定義構造器.由於匿名內部類沒有類名,所以無法定義構造器.但匿名內部類可以定義初始化塊
溫馨小提示:匿名內部類必須繼承一個父類或實現一個接口,但最多只能繼承一個父類或接口
二.匿名內部類的兩種形式
方式一:隱式
溫馨小提示:(1)當通過實現接口來創建匿名內部類時,匿名內部類只有隱式的無參數構造器,故new后面不能傳入參數值(接口不包含構造器)1
(2)new Device("電子顯示器") -->public void test(Device d) -->Device d=new Device ();
方式二:顯示
溫馨小提示:如果局部變量被匿名內部類訪問,那么該局部變量相當於使用了final修飾,系統會默認加上final修飾符,此時若再修改age值,報錯
interface A
{
void test();
}
public class Atest{
public static void main(String[] args) {
int age=19;
A a=new A(){
public void test(){
System.Out.Println(age);
}
};
}
}