程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java 編程思想筆記(六)——內部類

java 編程思想筆記(六)——內部類

編輯:關於JAVA

java 編程思想筆記(六)——內部類。本站提示廣大學習愛好者:(java 編程思想筆記(六)——內部類)文章只能為提供參考,不一定能成為您想要的結果。以下是java 編程思想筆記(六)——內部類正文


1、定義
  一個類的定義放在另一個類的內部,這個類就叫做內部類。

2、鏈接到外圍類
  創建了內部類對象時,它會與創造它的外圍對象有了某種聯系,於是能訪問外圍類的所有成員,不需任何特殊條件。

  那麼,它是如何實現的呢?
  是這樣的,用外圍類創建內部類對象時,此內部類對象會秘密的捕獲一個指向外圍類的引用,於是,可以通過這個引用來訪問外圍類的成員。
  通常,這些都是編譯器來處理,我們看不到,也不用關心這個。
  正是因為如此,我們創建內部類對象時,必須與外圍類對象相關聯。

3、使用關鍵字.this與.new

  .this關鍵字
  內部類中得到當前外圍類對象的引用,可以使用.this關鍵字,注意與new的區別

  使用.this後,得到時創建該內部類時使用的外圍類對象的引用,new則是創建了一個新的引用。 

  .new關鍵字
  如果想直接創建一個內部類對象,而不是通過外圍類對象的方法來得到,可以使用.new關鍵字
  必須是外圍類對象.new,而不能是外圍類.new

  而且需要注意的是,在創建外圍類對象之前,不可能創建內部類的對象(嵌套類除外)。

4、內部類與向上轉型
  將內部類向上轉型為基類型,尤其是接口時,內部類就有了用武之地。

5、方法內的類
  可以在方法內創建一個類。

  值得注意的是:方法內創建的類,不能加訪問修飾符。
  另外,方法內部的類也不是在調用方法時才會創建的,它們一樣也被編譯了。

6、匿名內部類

  匿名內部類後面的分號不可缺少!
  匿名類,顧名思義,就是沒有名稱。

  匿名類可以創建,接口,抽象類,與普通類的對象。創建接口時,必須實現接口中所有方法。

匿名內部類接受的參數必須為final修飾

    如果不是final的,編譯器就會提示出錯。
    另外,還可以在匿名內部類裡定義屬性
    由於類是匿名的,自然沒有構造器,如果想模仿構造器,可以采用實例初始化({})

7、嵌套類
 static的內部類就叫做嵌套類
   使用嵌套類時有兩點需要注意:
   a、創建嵌套類對象時,不需要外圍類
   b、在嵌套類中,不能像普通內部類一樣訪問外圍類的非static成員

  另外,嵌套類還有特殊之處,就是嵌套類中可以有static方法,static字段與嵌套類,而普通內部類中不能有這些。

8、內部類標識符
  我們知道每個類會產生一個.class文件,文件名即為類名
  同樣,內部類也會產生這麼一個.class文件,但是它的名稱卻不是內部類的類名,而是有著嚴格的限制:外圍類的名字,加上$,再加上內部類名字。
  前面說到得定義在方法內的內部類,不是在調用方法時生成,而是與外圍類一同編譯,就可以通過查看.class文件的方式來證明。

9、為何要內部類?
   a、內部類提供了某種進入外圍類的窗戶。
   b、也是最吸引人的原因,每個內部類都能獨立地繼承一個接口,而無論外圍類是否已經繼承了某個接口。
   因此,內部類使多重繼承的解決方案變得更加完整。
   在項目中,需要多重繼承,如果是兩個接口,那麼好辦,接口支持多重繼承。
   如果是兩個類呢?這時只有使用內部類了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved