1. 程式人生 > >java語言基礎(49)——匿名內部類的本質理解

java語言基礎(49)——匿名內部類的本質理解

1 匿名內部類就是內部類的簡化寫法

2 前提,存在一個類或介面

3 格式: new 類名或介面名(){

                  重寫方法......

               }

4 好處:用完即回收。少佔記憶體。

上程式碼:

interface Inner  // 介面
{
	public abstract void show();
}
abstract class InnerClass // 抽象類 也可以是具體類
{
	public abstract void show();
	public abstract void show2();
}

class Outer
{
	public void method(){
	    // 介面匿名內部類
		new Inner(){
		  public void show(){
			System.out.println("Inner show");	  
		  }	
		}.show(); //輸出 Inner show

        // 抽象類匿名內部類  多型思想 呼叫多個方法
	    InnerClass IC = new InnerClass(){
		  public void show(){
			System.out.println("InnerClass show");
		  }
		  public void show2(){
		    System.out.println("InnerClass show2");
		  }
		}; 

		IC.show(); //InnerClass show
		IC.show2();//InnerClass show2
	
	}

}
 
class AnonymousInnerClassTest
{
	public static void main(String[] args){
	  Outer o = new Outer();
	  o.method();
	}
}

抽象類和介面本來是不可以new操作的,但是此處可以,那是因為new 和 實現同時進行了。匿名 new  介面時,相當於new了一個實現了此介面的物件。匿名new抽象類時,相當於new了一個繼承了此抽象類的子類物件。然後,物件可以呼叫其對應的方法。