java的內部類
1.使用內部類的原因:
a.內部類方法可以訪問該類定義所在的作用域中的資料,包括私有資料
b. 內部類可以對同一個包中的其他類隱藏起來
c.當想要定義一個回撥函式又不想編寫大量程式碼時,使用匿名內部類比較便捷
2.內部類的物件總存在一個隱式引用,它指向了建立它的外部類物件。這個引用在內部類的定義中是不可見的。外部類的引用在構造器中設定,編譯器修改了所有內部類的構造器,新增一個外圍類的引用引數。如果內部類沒有定義構造器,那麼編譯器會為它生成一個帶有外部類引用的預設構造器。
3.內部類是一種編譯器現象,與虛擬機器無關。編譯器會把內部類翻譯成用$(美元符號)分割內部類名和外部類名的常規類檔案,而虛擬機器對此一無所知。
4.編譯器為了引用外圍類,生成了一個外圍類的例項域。
5.如果一個內部類使用的頻率很低,可以把它包裝在外部類的一個方法裡,稱為區域性內部類。區域性類不能使用public或private訪問說明符進行宣告,它的作用被限定在宣告這個區域性類的塊中。區域性類有一個優點,即對外部世界可以完全隱藏起來,除了包裹內部類的方法外沒有任何其他方法知道它的存在。
6.匿名內部類必須且只繼承一個類或一個介面,並且不能定義建構函式,也不能存在任何靜態成員變數和靜態方法。匿名內部類不能是抽象的,它必須實現繼承類或介面的所有抽象方法。
7.拷貝引用,為了避免引用值發生改變,例如被外部類的方法修改等,而導致內部類得到的值不一致,於是用final來讓該引用不可改變。故如果定義了一個匿名內部類,並且希望它使用一個其外部定義的引數,那麼編譯器會要求該引數引用是final的。
8.在內部類不需要訪問外圍類物件時,應該使用靜態內部類,靜態內部類就是在一個內部類前面用static修飾。所以靜態內部類只能訪問外部類的靜態變數和方法。靜態內部類的例項建立不用依賴外部類的例項,它可以師姐使用
OuterClass.InnerClass a=new OuterClass.InnerClass();來建立
相關文章
- Java內部類和匿名內部類的用法Java
- java內部類,區域性內部類,靜態內部類,匿名內部類Java
- java內部類之成員內部類之匿名內部類Java
- Java內部類詳解--匿名內部類Java
- java內部類之成員內部類Java
- Java 內部類Java
- Java內部類Java
- Java中的巢狀類、內部類、靜態內部類Java巢狀
- 10-Java內部類——成員內部類、區域性內部類、匿名內部類Java
- java內部類的理解Java
- java中的內部類Java
- java之內部類(InnerClass)----非靜態內部類、靜態內部類、區域性內部類、匿名內部類Java
- Java中的匿名內部類及內部類的二三事Java
- Java內部類詳解-- 成員內部類Java
- java內部類,為什麼需要內部類?Java
- java內部類之成員內部類之區域性內部類Java
- 10、Java——內部類Java
- java內部類案例Java
- 搞懂 JAVA 內部類Java
- Java--內部類Java
- Java內部類詳解--區域性內部類Java
- java內部類之成員內部類例項Java
- Java類與匿名內部類Java
- Java 的抽象類, 介面以及內部類Java抽象
- Java基礎內部類4-內部類進階Java
- Java基礎10---包、內部類、匿名內部類Java
- Java基礎--Java 內部類Java
- 淺談java內部類Java
- Java-InnerClass內部類Java
- Java內部類詳解Java
- Java 內部類詳解Java
- java靜態內部類Java
- JAVA內部類有關Java
- JAVA內部類學習Java
- 初識Java內部類Java
- Java中內部類的騷操作Java
- 淺談Java中的內部類Java
- Java在方法作用域內建立的內部類Java