內部類的使用

內部類的訪問規則:

        1、內部類可以直接訪問它所在外部類中的成員,包括私有成員。內部類之所以能直接訪問外部類中的成員,就是因爲內部類持有一個外部類的引用,格式:外部類.this

        class Outer

        {

                private int x=1;

                class Inner

                {

                        int x=3;

                        void show()

                        {

                                System.out.println("Inner:"+Outer.this.x);

                        }

                }

        }

        2、外部類要訪問內部類,必須建立內部類的對象。

訪問格式:

        1、當內部類定義在外部類的成員位置上,而且非私有,可以在外部其他來中直接建立內部類對象。格式:外部類名.內部類名 變量名=new 外部類名().內部類名()。比如Outer.Inner in=new Outer().Inner();

        2、當內部類在成員位置上時,就可以被成員修飾符所修飾。比如,private:將內部類在外部類中進行封裝

                                                                                                                              static:用static修飾時,內部類就具備了static的特性,而且此時內部類只能直接訪問外部類中的static成員,出現了訪問的侷限性。

        在外部類中如何訪問static內部類的非靜態成員呢?new Outer.Inner().show()

        在外部其他類中,如何直接訪問static內部類中的靜態成員呢?Outer.Inner.show()

注意:當內部類中定義了靜態成員時,該內部類必須是static的。

            當外部類中的靜態方法訪問內部類時,內部類也必須是static的。

說這麼多,很多人會疑惑什麼時候定義內部類?我們都知道類就是對事物的描述,而內部類顯而言之就是事物的內部還有事物,這時就用內部類描述。

當內部類定義在局部時:

        1、不可以被成員修飾符修飾

        2、可以直接訪問外部類中的成員,因爲還持有外部類的引用,但是不可以訪問它所在的局部中的變量,只能訪問被final修飾的局部變量。

匿名內部類:

        1、匿名內部類其實就是內部類的簡寫格式。

        2、定義匿名內部類的前提:

              內部類必須是繼承一個類或者實現一個接口

        3、匿名內部類對象的格式:new 父類或者接口(){定義子類的內容}.子類方法

        4、匿名內部類中定義的方法最好少於三個,因爲定義匿名內部類的時候需要繼承父類或者實現接口,如果方法太多,就達不到簡化代碼的效果,還不如帶有名字的的內部類。

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