天天看點

Java程式設計思想-6Java程式設計思想

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、内部類的繼承

内部類的繼承一定要有外圍類的對象。在繼承過程中内部類不能被覆寫,因為他們所屬于的内部命名空間不同。