《Java編程思想》學習筆記:內部類

一、定義

可以將一個類定義到另一個類的內部,這個類就是內部類;

二、分類

1、內部類(內部類對象和外部類對象存在必然的聯繫)

  • 內部類擁有所有外部類所有成員的訪問權,這是因爲應用在創建一個內部類的對象時,這個對象就和製造該對象的外部類有了一種聯繫,既內部類對象會祕密的捕獲一個指向外部類對象的引用。(注意:如果是靜態內部類的話就不需要這種引用);
  • 內部類對象需要通過外部類的對象來創建;
  • 在擁有外部類對象之前是不可能擁有內部類對象的,這是因爲內部類對象會悄悄自動連接到創建它的外部類對象上。(注意:如果是靜態內部類的話就不需要這種引用);

2、嵌套類(靜態內部類)(內部類對象與外部類對象不存在聯繫)

  • 要創建嵌套類對象,不需要外部類對象;
  • 不能從嵌套類的對象中訪問非靜態的外部類對象;

三、存在意義

一般來說,內部類繼承自某個類或者實現某個類的接口,每個內部類都能獨立的繼承自一個(接口)的實現,所以無論外圍類是否繼承(接口)的實現,對於內部類沒有任何影響。

理解:我們可以在一個類的創建多個內部類,相當於帶了很多小弟,這些小弟總得認識自己的老大是誰吧(指向外圍類對象的引用),這些小弟可以共享我的資源,同時,這些小弟都很優秀,能夠獨立完成我交給他們的某些工作(一個實現)。

四、閉包與回調

  • 閉包:閉包是一個對象,它記錄了一些信息,這些信息來自於該對象的作用域;
  • 回調:回調的價值在於它的靈活性——可以在運行時決定調用什麼方法;

五、內部類的繼承

由於內部類對象在創建時能夠自動捕獲指向外圍類的對象的的引用,但是其內部類的導出類的構造器就沒有這個能力,所以需要在構造器中手動添加:enclosingClassReference.super();,否則編譯不過。

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