Java程式設計思想
内部類
将一個類定義在另外一個類的内部,這就是内部類。靜态内部類,被static關鍵字修飾的内部類。
1、建立内部類和連結到外部類
内部類最基本的建立方式,就是在類的内部建立一個類。其宿主類需要建立該内部類的執行個體對象,才可以使用。而内部類可以任意使用其宿主類的方法和屬性。内部類可以使用”宿主類.this”的方式使用宿主類對象。當在宿主類之外使用它的内部類時,需要使用宿主類的執行個體對象再加.new的方式來建構其内部類對象。如:
Pubic class OutClass{
Class InnerClass{}
}
OutClass. InnerClass innerClass = new OutClass().new InnerClass() ;
内部類編譯後生成的class檔案,OutClass InnerClass.class。如果是匿名内部類,則編譯後的内部類的class檔案為一個數字:OutClass 數字.class.
2、内部類的建立位置
- 1,建立在類中,類似以類的屬性和方法。
- 2,建立在方法中。
- 3,建立在一個作用域中。
- 4,匿名内部類
3、匿名内部類
沒有确定名稱的内部類。這些類的原型應該是繼承别的類或者實作一個接口而産生的新類。匿名内部類使用外部類的對象引用要将外部類的對象引用定義為final類型。匿名類中不允許修改其所使用的外部類的引用以及變量。(原因暫時不詳)
4、嵌套類(靜态内部類)
靜态内部類和普通内部類的差别:1)外部建立其對象時,無需使用外部類的對象來執行個體化。2)不能随意通路外部類的非靜态成員變量和方法。
接口中的内部類預設也是靜态内部類。可以在接口的内部類中實作該接口。
5、内部類存在的意義
意義1:完美的解決了類的多繼承問題,因為内部類可以繼承外部類所要繼承的類。并且在外圍類中可以建立很多個内部類的對象。
意義2:提供通路外圍類的視窗。
6、閉包和回調
閉包:一個可調用的對象,它記錄了一些資訊,這些資訊來源于建立它的作用域。簡而言之就是,一個對象,包含了建立者的資訊。
回調:一些匿名内部類可以很好的實作回調,尤其在事件處理過程中。
7、内部類的繼承
内部類的繼承一定要有外圍類的對象。在繼承過程中内部類不能被覆寫,因為他們所屬于的内部命名空間不同。