JAVA匿名內部類

匿名內部類是一種特殊的局部內部類,這種內部類沒有類名。適用於只使用一次並且不需要多次創建對象的類。使用匿名內部類可以使類代碼與創建對象同時完成,提高代碼的可維護性與靈活性。

package JAVA_Project_01_05;

//匿名內部類是一種特殊的局部內部類,這種內部類沒有類名。適用於只使用一次並且不需要多次創建對象的類。使用匿名內部類可以使類代碼與創建對象同時完成,提高代碼的可維護性與靈活性。

//使用匿名內部類的技術要點如下:
//
//· 匿名內部類的語法格式:“new實現的接口名或繼承的類名(){};”。
//
//· 匿名內部類是惟一一種沒有構造方法的類。所以匿名內部類的使用範圍有限。大部分匿名內部類用於接口的回調。
//
//· 匿名內部類在編譯時由系統自動起名爲Out$1.class。
//
//· 匿名內部類用於繼承其他類或實現接口,並不需要增加額外的方法,只是對繼承方法的實現與重寫。


interface AnonymityInter {//定義一個接口

    public void method();

}

abstract class AnonymityAbstract {//定義一個抽象類

    int count;

    abstract void method();

}

class AnonymityClass {//定義一個類

    public void method() {

        System.out.println("這是一個普通的類");

    }

}

public class TextAnonymity {//操作匿名內部類的類

    public static void main(String[] args) {//Java程序主入口處

        AnonymityInter inter = new AnonymityInter() {//實現接口的匿名內部類

            public void method() {//實現接口中的方法

                System.out.println("在匿名內部類中實現接口的方法");

            }

        };

        inter.method();//調用方法

        AnonymityAbstract aa = new AnonymityAbstract() {//實現抽象類的匿名內部類

            {

                count = (int) (10 * (Math.random() + 1));//隨機獲得數字

            }

            @Override
            void method() {//重寫方法

                System.out.println("您的幸運數字是:" + count);

            }

        };

        aa.method();//調用方法

        AnonymityClass ac = new AnonymityClass() {//實現普通類的匿名內部類

            public void method() {//覆蓋類的方法

                System.out.println("覆蓋類的方法");

            }

        };

        ac.method();//調用方法

    }

}

/*
(1)在程序中包含用匿名內部類實現接口的方法、繼承抽象類重寫方法以及對普通類的方法進行重寫。在重寫抽象類的匿名內部類中,在語句中定義要初始化的數字需要將初始化的數字放入大括號中,否則編譯不通過。
(2)在實現普通類的匿名內部類中,對method()方法進行重寫,覆蓋了原普通類中方法的實現。重寫也稱爲覆蓋,滿足覆蓋需要注意:覆蓋的方法的返回值必須和被覆蓋的方法的返回值一致;覆蓋的方法所拋出的異常必須和被覆蓋的方法所拋出的異常一致,或者是其子類;被覆蓋的方法不能爲private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋;覆蓋的方法的標誌必須要和被覆蓋的方法的標誌完全匹配,才能達到覆蓋的效果。
 */
發佈了71 篇原創文章 · 獲贊 12 · 訪問量 4544
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章