一、匿名內部類適合建立那種只須要一次使用的類java
二、匿名內部類定義格式:對象
new 實現接口() | 父類構造器(實參列表){ //匿名內部類類體部分 }
三、從上面定義格式能夠看出,匿名內部類必須實現一個接口,或繼承一個父類,而且只能夠實現一個接口,或實現一個父類blog
四、匿名內部類不能定義爲抽象類,由於定義匿名內部類時,會當即建立匿名內部類的對象,所以不能定義爲抽象類繼承
五、匿名內部類不能定義構造器,由於匿名內部類沒有類名,因此沒法定義構造器,但能夠定義初始化塊,能夠經過實例初始化,來完成構造器須要完成的事情接口
六、最經常使用的建立匿名內部類方式是:須要建立某個接口類型的對象遊戲
代碼1:用實現類實現get
//-定義一個接口 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()); } }
運行結果:class
代碼2:用匿名類實現test
//-定義接口 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 "遊戲機"; } }); } }
運行效果:im
代碼3:用匿名類實現
繼承父類來建立匿名內部類