1、匿名內部類適合創建那種只需要一次使用的類
2、匿名內部類定義格式:
new 實現接口() | 父類構造器(實參列表){
//匿名內部類類體部分
}
3、從上面定義格式可以看出,匿名內部類必須實現一個接口,或繼承一個父類,並且只可以實現一個接口,或實現一個父類
4、匿名內部類不能定義為抽象類,因為定義匿名內部類時,會立即創建匿名內部類的對象,因此不能定義為抽象類
5、匿名內部類不能定義構造器,因為匿名內部類沒有類名,所以無法定義構造器,但可以定義初始化塊,可以通過實例初始化,來完成構造器需要完成的事情
6、最常用的創建匿名內部類方式是:需要創建某個接口類型的對象
代碼1:用實現類實現
//-定義一個接口
interface Product{
public double getPrice();
public String getName();
}
//-實現接口
class AnonymouseProduct implements Product{
public double getPrice(){
return 20.5;
}
public String getName(){
return "游戲機";
}
}
public class AnonymouseTest{
//-與接口耦合
public void test(Product p){
System.out.println("張三買了一個"+p.getName()+",消費了"+p.getPrice()+"美元!");
}
public static void main(String[] args){
//-多態方式創建實現類實例
new AnonymouseTest().test(new AnonymouseProduct());
}
}
運行結果:

代碼2:用匿名類實現
//-定義接口
interface Product{
public double getPrice();
public String getName();
}
public class AnonymouseTest{
//-與接口耦合
public void test(Product p){
System.out.println("張三買了一個"+p.getName()+",消費了"+p.getPrice()+"美元!");
}
public static void main(String[] args){
AnonymouseTest at=new AnonymouseTest();
//-通過匿名類實現接口
at.test(new Product(){
public double getPrice(){
return 20.5;
}
public String getName(){
return "游戲機";
}
});
}
}
運行效果:

代碼3:用匿名類實現
繼承父類來創建匿名內部類
