Java8 改進的匿名內部類:


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:用匿名類實現

繼承父類來創建匿名內部類

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM