成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Java 內(nèi)部類(10)

andong777 / 1784人閱讀

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

可以將一個(gè)類的定義放在另一個(gè)類的定義內(nèi)部,這就是內(nèi)部類。

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

1.創(chuàng)建內(nèi)部類

創(chuàng)建:把類的定義置于外圍類的里面.

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

如果想從外部類的非靜態(tài)方法之外的位置創(chuàng)建某個(gè)內(nèi)部類的對(duì)象,那么必須知名這個(gè)對(duì)象的類型:OuterClassName.InnerClassName.

2.鏈接到外部類

當(dāng)生成一個(gè)內(nèi)部類的對(duì)象時(shí),此對(duì)象能夠訪問其外圍對(duì)象的所有成員,而不需要任何特殊條件.

內(nèi)部類還擁有其外圍類的所有元素的訪問權(quán).

內(nèi)部類的對(duì)象只能在與其外圍類對(duì)象的相關(guān)聯(lián)的情況下才能被創(chuàng)建(在內(nèi)部類是非static類時(shí)).

3.使用.this與.new

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

必須使用外部類的對(duì)象來創(chuàng)建內(nèi)部類對(duì)象,使用.new語法:外部類對(duì)象的引用.new 內(nèi)部類().

如果創(chuàng)建嵌套類(靜態(tài)內(nèi)部類),那么就不需要對(duì)外部類對(duì)象的引用.

4.內(nèi)部類與向上轉(zhuǎn)型

將內(nèi)部類向上轉(zhuǎn)型為其基類/接口,得到的只是只想基類或接口的引用,所以能夠很方便地隱藏實(shí)現(xiàn)細(xì)節(jié).

5.在方法和作用域內(nèi)的內(nèi)部類

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

局部?jī)?nèi)部類:在方法的作用域內(nèi)(而不是在其他類的作用域內(nèi))創(chuàng)建一個(gè)完整的類。

局部?jī)?nèi)部類不會(huì)出現(xiàn)命名沖突.

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

6.匿名內(nèi)部類

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

如果匿名內(nèi)部類的基類需要一個(gè)有參數(shù)的構(gòu)造器,只需簡(jiǎn)單地傳遞合適的參數(shù)給基類的構(gòu)造器即可.

在匿名內(nèi)部類末尾的分號(hào),并不是用來標(biāo)記此內(nèi)部類結(jié)束的。實(shí)際上,它標(biāo)記的是表達(dá)式的結(jié)束,只不過這個(gè)表達(dá)式正巧包含了匿名內(nèi)部類罷了。因此,這與別的地方使用分號(hào)是一致的.

如果定義一個(gè)匿名內(nèi)部類,并且希望它使用一個(gè)在其外部定義的對(duì)象,那么編譯器會(huì)要求其參數(shù)引用是final的.

在匿名類中不可能有命名構(gòu)造器(因?yàn)樗緵]有名字),但通過實(shí)例初始化,就能夠達(dá)到為匿名內(nèi)部類創(chuàng)建一個(gè)構(gòu)造器的效果.

實(shí)例初始化的實(shí)際效果就是構(gòu)造器,但是不能重載實(shí)例初始化方法,所以僅有一個(gè)這樣的構(gòu)造器.

匿名內(nèi)部類既可以擴(kuò)展類,也可以實(shí)現(xiàn)接口,但是不能兩者兼?zhèn)?而且如果是實(shí)現(xiàn)接口,也只能實(shí)現(xiàn)一個(gè)接口.

使用匿名內(nèi)部類結(jié)合工廠方法模式.

7.嵌套類

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

普通的內(nèi)部類對(duì)象隱式地保存了一個(gè)引用,指向創(chuàng)建它的外圍對(duì)象。然而,當(dāng)內(nèi)部類是static的時(shí)候,就不是這樣了.

1.要?jiǎng)?chuàng)建嵌套類的對(duì)象,并不需要其外圍類的對(duì)象;2.不能從嵌套類的對(duì)象中訪問非靜態(tài)的外圍類對(duì)象.

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

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

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

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

8.為什么需要內(nèi)部類

每個(gè)內(nèi)部類都能獨(dú)立地繼承自一個(gè)(接口的)實(shí)現(xiàn),所以無論外圍類是否已經(jīng)繼承了某個(gè)(接口的)實(shí)現(xiàn),對(duì)于內(nèi)部類都沒有影響.

內(nèi)部類允許繼承多個(gè)非接口類型.

閉包(closure)是一個(gè)可調(diào)用的對(duì)象,它記錄了一些信息,這些信息來自于創(chuàng)建它的作用域.

通過內(nèi)部類提供的閉包功能完成回調(diào),比指針更靈活,更安全.

應(yīng)用程序框架(application framework)就是被設(shè)計(jì)用以解決某類兒童頂問題的一個(gè)類或一組類.

內(nèi)部類允許控制框架的完整實(shí)現(xiàn)是由單個(gè)的類創(chuàng)建的,從而使得實(shí)現(xiàn)的細(xì)節(jié)被封裝了起來.

9.內(nèi)部類的繼承

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

10.內(nèi)部類可以被覆蓋嗎

當(dāng)繼承了某個(gè)外圍類的時(shí)候,內(nèi)部類并沒有發(fā)生什么特別神奇的變化,這個(gè)兩個(gè)內(nèi)部類是完全獨(dú)立的兩個(gè)個(gè)體,各自在自己的命名空間內(nèi).

可以明確的繼承某個(gè)內(nèi)部類.

11.局部?jī)?nèi)部類

局部?jī)?nèi)部類可以重載構(gòu)造器,而匿名內(nèi)部類只能用于實(shí)例初始化.

使用局部?jī)?nèi)部類的而不適用匿名內(nèi)部類的另一個(gè)理由:需要不知一個(gè)該內(nèi)部類的對(duì)象.

12.內(nèi)部類標(biāo)識(shí)符

每個(gè)類都會(huì)產(chǎn)生一個(gè).class文件,其中包含了如何創(chuàng)建該類星星的對(duì)象的全部信息.內(nèi)部類也必須生成一個(gè).class文件以包含它們的Class對(duì)象信息.

規(guī)則:外圍類的名字,加上"$",再加上內(nèi)部類的名字.

如果內(nèi)部類是匿名的,編譯器會(huì)簡(jiǎn)單地產(chǎn)生一個(gè)數(shù)字作為其標(biāo)識(shí)符。如果內(nèi)部類是嵌套在別的內(nèi)部類之中,只需直接將它們的名字加在其外圍類標(biāo)識(shí)符與"$"的后面.

END

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/71594.html

相關(guān)文章

  • (Thinking in Java)第10內(nèi)部

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

    Brenner 評(píng)論0 收藏0
  • JAVA學(xué)習(xí)之路 (六) 面向?qū)ο笾庋b、繼承、多態(tài)

    摘要:面向?qū)ο笾庋b繼承多態(tài)封裝將類中的信息進(jìn)行隱藏在類的內(nèi)部,不允許外部程序信息直接訪問,而是只能通過該類的提供的方法來實(shí)現(xiàn)對(duì)隱藏信息的提供和訪問。與之對(duì)應(yīng),包含內(nèi)部類的類被稱為外部類。 面向?qū)ο笾庋b、繼承、多態(tài) 封裝 將類中的信息進(jìn)行隱藏在類的內(nèi)部,不允許外部程序信息直接訪問,而是只能通過該類的提供的方法來實(shí)現(xiàn)對(duì)隱藏信息的提供和訪問。 好處 只能隱藏規(guī)定的方法和數(shù)據(jù) 隱藏類的實(shí)現(xiàn)細(xì)節(jié),...

    wenhai.he 評(píng)論0 收藏0
  • Java編程思想》筆記10.內(nèi)部

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

    wslongchen 評(píng)論0 收藏0
  • Java編程基礎(chǔ)11——面向?qū)ο骭包&權(quán)限修飾符&匿名內(nèi)部

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

    Bryan 評(píng)論0 收藏0
  • Java程序設(shè)計(jì)筆記

    摘要:對(duì)象的自動(dòng)清除對(duì)象回收是由垃圾回收線程負(fù)責(zé)方法可以要求系統(tǒng)進(jìn)行垃圾回收,僅僅是建議系統(tǒng)沒有析構(gòu)方法,但的有類似方法系統(tǒng)在回收時(shí)會(huì)自動(dòng)調(diào)用對(duì)象的方法子類的方法可以在里面釋放系統(tǒng)資源,一般來說,子類的方法中應(yīng)該調(diào)用父類的方法。 對(duì)象的自動(dòng)清除 對(duì)象回收是由垃圾回收線程負(fù)責(zé) System.gc()方法可以要求系統(tǒng)進(jìn)行垃圾回收,僅僅是建議系統(tǒng) java沒有析構(gòu)方法,但Object的final...

    microcosm1994 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

andong777

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<