Java8 改進的匿名內部類:

一、匿名內部類適合建立那種只須要一次使用的類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:用匿名類實現

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

相關文章
相關標籤/搜索