自學Java之day11_java之匿名內部類

原文鏈接:www.baidu.com

什麼是匿名內部類

匿名內部類 :是內部類的簡化寫法。它的本質是一個 帶具體實現的 父類或者父接口的 匿名的 子類對象

前提

  • 匿名內部類必須繼承一個父類或者實現一個父接口

格式 :

接口名稱 對象名 = new 接口名稱() {
       // 覆蓋重寫所有抽象方法
};

對格式“new 接口名稱() {...}”進行解析:

  • new代表創建對象的動作
  • 接口名稱就是匿名內部類需要實現哪個接口
  • {...}這纔是匿名內部類的內容

注意幾點問題:

  • 匿名內部類,在【創建對象】的時候,只能使用唯一一次。如果希望多次創建對象,而且類的內容一樣的話,那麼就需要使用單獨定義的實現類了。
  • 匿名對象,在【調用方法】的時候,只能調用唯一一次。如果希望同一個對象,調用多次方法,那麼必須給對象起個名字。
  • 匿名內部類是省略了【實現類/子類名稱】,但是匿名對象是省略了【對象名稱】強調:匿名內部類和匿名對象不是一回事!!!

代碼舉例

定義接口


public interface Flyable {
    //定義飛的抽象方法
    public abstract void fly();
}

創建匿名內部類,並調用:

public class InnerDemo {
    public static void main(String[] args) {

        /*
            1.等號右邊:是匿名內部類,定義並創建該接口的子類對象
            2.等號左邊:是多態賦值,接口類型引用指向子類對象
        */
        Flyable flyable = new Flyable() {
            @Override
            public void fly() {
                System.out.println("我可以飛起來");
            }

        };
        // 將flyable傳遞給showFly方法中;
        showFly(flyable);
    }

    public static void showFly(Flyable f) {
        f.fly();
    }

}

代碼執行後的結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章