国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java 內部類(10)

andong777 / 1732人閱讀

摘要:可以將一個類的定義放在另一個類的定義內部,這就是內部類。實際上,它標記的是表達式的結束,只不過這個表達式正巧包含了匿名內部類罷了。如果內部類是嵌套在別的內部類之中,只需直接將它們的名字加在其外圍類標識符與的后面

可以將一個類的定義放在另一個類的定義內部,這就是內部類。

內部類允許你把一些邏輯相關的類組織在一起,并控制位于內部的類的可視性.

1.創建內部類

創建:把類的定義置于外圍類的里面.

更典型的情況是,外部類將有一個方法,該方法返回一個只想內部類的引用.

如果想從外部類的非靜態方法之外的位置創建某個內部類的對象,那么必須知名這個對象的類型:OuterClassName.InnerClassName.

2.鏈接到外部類

當生成一個內部類的對象時,此對象能夠訪問其外圍對象的所有成員,而不需要任何特殊條件.

內部類還擁有其外圍類的所有元素的訪問權.

內部類的對象只能在與其外圍類對象的相關聯的情況下才能被創建(在內部類是非static類時).

3.使用.this與.new

如果你需要生成對外部類對象的引用,可以使用外部類的名字后面緊跟圓點和this.

必須使用外部類的對象來創建內部類對象,使用.new語法:外部類對象的引用.new 內部類().

如果創建嵌套類(靜態內部類),那么就不需要對外部類對象的引用.

4.內部類與向上轉型

將內部類向上轉型為其基類/接口,得到的只是只想基類或接口的引用,所以能夠很方便地隱藏實現細節.

5.在方法和作用域內的內部類

可以在一個方法里面或者在任意的作用域內定義內部類(理由:1.實現了某類型的接口,可以創建并返回對其的引用;2.要解決一個復雜的問題,想創建一個類來輔助解決方案,又不希望這個類是公共可用的).

局部內部類:在方法的作用域內(而不是在其他類的作用域內)創建一個完整的類。

局部內部類不會出現命名沖突.

在任意的作用域內定義內部類,并不是說該類的創建時有條件的,它其實與別的類一起編譯過了.然而,在定義內部類的作用域之外,它是不可用的,除此之外,它與普通的類一樣.

6.匿名內部類

方法將返回值的生成與表示這個返回值的類的定義結合在一起,且這個類是匿名的.

如果匿名內部類的基類需要一個有參數的構造器,只需簡單地傳遞合適的參數給基類的構造器即可.

在匿名內部類末尾的分號,并不是用來標記此內部類結束的。實際上,它標記的是表達式的結束,只不過這個表達式正巧包含了匿名內部類罷了。因此,這與別的地方使用分號是一致的.

如果定義一個匿名內部類,并且希望它使用一個在其外部定義的對象,那么編譯器會要求其參數引用是final的.

在匿名類中不可能有命名構造器(因為它根本沒有名字),但通過實例初始化,就能夠達到為匿名內部類創建一個構造器的效果.

實例初始化的實際效果就是構造器,但是不能重載實例初始化方法,所以僅有一個這樣的構造器.

匿名內部類既可以擴展類,也可以實現接口,但是不能兩者兼備.而且如果是實現接口,也只能實現一個接口.

使用匿名內部類結合工廠方法模式.

7.嵌套類

如果不需要內部類對象于其外圍對象之間有聯系,那么可以將內部類聲明為static,這通常稱為嵌套類.

普通的內部類對象隱式地保存了一個引用,指向創建它的外圍對象。然而,當內部類是static的時候,就不是這樣了.

1.要創建嵌套類的對象,并不需要其外圍類的對象;2.不能從嵌套類的對象中訪問非靜態的外圍類對象.

普通內部類的字段與方法,只能放在類的外部層次上,所以普通的內部類不能有static數據和static字段,也不能包含嵌套類。但是嵌套類可以包含所有這些東西.

在一個普通的(非static)內部類中,通過一個特殊的this引用可以鏈接到其外圍類對象,嵌套類就沒有這個特殊的this引用,這使得它類似于一個static方法.

正常情況下,不能再接口內部防止任何代碼,但嵌套類可以作為接口的一部分,甚至可以在內部類中實現其外圍接口.

一個內部類被嵌套多少層并不重要,它能透明地訪問所有它所嵌入的外圍類的所有成員.

8.為什么需要內部類

每個內部類都能獨立地繼承自一個(接口的)實現,所以無論外圍類是否已經繼承了某個(接口的)實現,對于內部類都沒有影響.

內部類允許繼承多個非接口類型.

閉包(closure)是一個可調用的對象,它記錄了一些信息,這些信息來自于創建它的作用域.

通過內部類提供的閉包功能完成回調,比指針更靈活,更安全.

應用程序框架(application framework)就是被設計用以解決某類兒童頂問題的一個類或一組類.

內部類允許控制框架的完整實現是由單個的類創建的,從而使得實現的細節被封裝了起來.

9.內部類的繼承

繼承自內部類,當要生成一個構造器時,默認的構造器并不算好,而且不能只是傳遞一個指向外圍類對象的引用。此外,必須在構造器內使用:enclosingClassReference.super(),這樣才提供了必要的引用.

10.內部類可以被覆蓋嗎

當繼承了某個外圍類的時候,內部類并沒有發生什么特別神奇的變化,這個兩個內部類是完全獨立的兩個個體,各自在自己的命名空間內.

可以明確的繼承某個內部類.

11.局部內部類

局部內部類可以重載構造器,而匿名內部類只能用于實例初始化.

使用局部內部類的而不適用匿名內部類的另一個理由:需要不知一個該內部類的對象.

12.內部類標識符

每個類都會產生一個.class文件,其中包含了如何創建該類星星的對象的全部信息.內部類也必須生成一個.class文件以包含它們的Class對象信息.

規則:外圍類的名字,加上"$",再加上內部類的名字.

如果內部類是匿名的,編譯器會簡單地產生一個數字作為其標識符。如果內部類是嵌套在別的內部類之中,只需直接將它們的名字加在其外圍類標識符與"$"的后面.

END

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71594.html

相關文章

  • (Thinking in Java)第10內部

    摘要:內部類中也可以取得這個外部類對象引用。創建成員內部類對象的時候需要外部類對象。另外在方法中的內部類不能加等權限修飾符,只能加和修飾符。可以在接口內部定義內部類,而且他們即使沒有修飾,也會自動變成的。 Thinking in Java撈干貨,寫筆記 一、成員內部類 1.最基本使用 public class Demo { class Contents{ privat...

    Brenner 評論0 收藏0
  • JAVA學習之路 (六) 面向對象之封裝、繼承、多態

    摘要:面向對象之封裝繼承多態封裝將類中的信息進行隱藏在類的內部,不允許外部程序信息直接訪問,而是只能通過該類的提供的方法來實現對隱藏信息的提供和訪問。與之對應,包含內部類的類被稱為外部類。 面向對象之封裝、繼承、多態 封裝 將類中的信息進行隱藏在類的內部,不允許外部程序信息直接訪問,而是只能通過該類的提供的方法來實現對隱藏信息的提供和訪問。 好處 只能隱藏規定的方法和數據 隱藏類的實現細節,...

    wenhai.he 評論0 收藏0
  • Java編程思想》筆記10.內部

    摘要:但遠不止如此,內部類了解外部類,并能與之通信。內部類還擁有其外圍類的所有元素的訪問權。普通內部類內不能有域和方法。特點普通內部類對象隱式的保存了外部類對象,但嵌套類并非如此。局部內部類可以訪問當前代碼塊內的常量,以及此外圍類的成員。 點擊進入我的博客 可以把一個類的定義放在另一個類的定義內部,這就是內部類。Java最晦澀的部分之一。內部類看起來就像是一種代碼隱藏機制,將類只與其他類的...

    wslongchen 評論0 收藏0
  • Java編程基礎11——面向對象_包&權限修飾符&匿名內部

    摘要:外部類要訪問內部類的成員,必須創建對象。前提存在一個類或者接口這里的類可以是具體類也可以是抽象類。 1.package關鍵字的概述及作用(了解) A:為什么要有包 將字節碼(.class)進行分類存放 包其實就是文件夾 B:包的概述 舉例: 學生:增加,刪除,修改,查詢 老師:增加,刪除,修改,查詢 ... 方案1:按照功能分 com.heima.add ...

    Bryan 評論0 收藏0
  • Java程序設計筆記

    摘要:對象的自動清除對象回收是由垃圾回收線程負責方法可以要求系統進行垃圾回收,僅僅是建議系統沒有析構方法,但的有類似方法系統在回收時會自動調用對象的方法子類的方法可以在里面釋放系統資源,一般來說,子類的方法中應該調用父類的方法。 對象的自動清除 對象回收是由垃圾回收線程負責 System.gc()方法可以要求系統進行垃圾回收,僅僅是建議系統 java沒有析構方法,但Object的final...

    microcosm1994 評論0 收藏0

發表評論

0條評論

andong777

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<