java語言基礎(49)——匿名內部類的本質理解
阿新 • • 發佈:2018-12-26
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了一個繼承了此抽象類的子類物件。然後,物件可以呼叫其對應的方法。