課件第8章二級(jí)_第1頁(yè)
課件第8章二級(jí)_第2頁(yè)
課件第8章二級(jí)_第3頁(yè)
課件第8章二級(jí)_第4頁(yè)
課件第8章二級(jí)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第8章 內(nèi)部類與包裝器 學(xué)前提示基本數(shù)據(jù)類型不能實(shí)例化成對(duì)象用,因而不能按照對(duì)象的思想來(lái)編程,Java中提供了包裝器進(jìn)行裝箱、拆箱操作來(lái)解決這個(gè)問(wèn)題。Java中有一種類,它聲明在另一個(gè)類中,這樣的類稱為內(nèi)部類。本章將討論內(nèi)部類和包裝器的相關(guān)知識(shí)。知識(shí)要點(diǎn)內(nèi)部類 對(duì)象包裝器裝箱和拆箱18.1 內(nèi)部類和內(nèi)部接口內(nèi)部類可以分為:靜態(tài)內(nèi)部類、非靜態(tài)內(nèi)部類、局部?jī)?nèi)部類、匿名內(nèi)部類。內(nèi)部類都是一個(gè)獨(dú)立的類,編譯完后都會(huì)對(duì)應(yīng)一個(gè).class文件,文件名以“外部類類名$內(nèi)部類類名.class”的形式出現(xiàn)。由于內(nèi)部類在一個(gè)類的內(nèi)部作為外部類的一個(gè)成員出現(xiàn),所以它們可以任意訪問(wèn)外部類的成員變量而不受修飾符的限制。

2、28.1 內(nèi)部類和內(nèi)部接口內(nèi)部類可以訪問(wèn)它的外部類的一切成員,包括private成員。內(nèi)部類的主要好處是:高內(nèi)聚、低耦合。也就是說(shuō),內(nèi)部類相當(dāng)于外部類的密友,外部類與其他類相當(dāng)于普通朋友,密友知道外部類的所有東西,普通朋友只能知道外部類所公開(kāi)的東西。下面對(duì)靜態(tài)內(nèi)部類、非靜態(tài)內(nèi)部類、局部?jī)?nèi)部類、匿名內(nèi)部類一一進(jìn)行說(shuō)明。38.1.1 非靜態(tài)內(nèi)部類未使用關(guān)鍵字static修飾的內(nèi)部類,稱為是費(fèi)靜態(tài)內(nèi)部類,它可以看作為外部類的非靜態(tài)成員。定義非靜態(tài)內(nèi)部類等同于定義一個(gè)類的非靜態(tài)成員。它的代碼形式如下:public class Outer /外部類 int i; /外部類的非靜態(tài)成員屬性String n

3、ame;class Inner /非靜態(tài)成員內(nèi)部類48.1.1 非靜態(tài)內(nèi)部類非靜態(tài)內(nèi)部類有如下性質(zhì)。(1)費(fèi)靜態(tài)內(nèi)部類相當(dāng)于外部類的成員,可以使用public/private/default權(quán)限修飾符修飾。(2)一個(gè)非靜態(tài)內(nèi)部類對(duì)象必須依附于外部類對(duì)象而存在非靜態(tài)內(nèi)部類可以訪問(wèn)外部類一切成員。(3)在非靜態(tài)類內(nèi)部采用外部類名.this的形式來(lái)獲得其所屬外部類對(duì)象。58.1.1 成員內(nèi)部類內(nèi)部類的實(shí)例化途徑有以下幾種形式:通過(guò)外部類的非靜態(tài)方法實(shí)例化內(nèi)部類。通過(guò)外部類的靜態(tài)方法實(shí)例化內(nèi)部類。68.1.1 成員內(nèi)部類下面介紹前兩種實(shí)例化途徑。通過(guò)定義一個(gè)外部類的方法來(lái)實(shí)例化內(nèi)部類,其實(shí)現(xiàn)代碼如下:

4、參見(jiàn)教材P230在Outer4類中雖然沒(méi)有看到外部類的實(shí)例化,但在外部類的instanceInner方法中直接實(shí)例化內(nèi)部類Inner4實(shí)質(zhì)上是虛擬機(jī)隱含地實(shí)例化了外部類,也就是內(nèi)部類引用會(huì)默認(rèn)鏈接到外部類的對(duì)象上。外部類的靜態(tài)方法訪問(wèn)成員內(nèi)部類,與在普通類外部訪問(wèn)屬性或方法的方式一樣。通過(guò)外部類的靜態(tài)main方法實(shí)例化內(nèi)部類,其實(shí)現(xiàn)代碼如下:參見(jiàn)教材P230由上述Outer5類的代碼可知,內(nèi)部類實(shí)例可在其外部類的實(shí)例方法中創(chuàng)建,此新創(chuàng)建內(nèi)部類實(shí)例所屬的外部類實(shí)例自然就是創(chuàng)建它的外部類實(shí)例方法對(duì)應(yīng)的外部類實(shí)例。78.1.2 靜態(tài)內(nèi)部類用static修飾的內(nèi)部類稱為靜態(tài)內(nèi)部類。靜態(tài)內(nèi)部類中可聲明靜

5、態(tài)成員或非靜態(tài)成員,并且可以通過(guò)public、protected、private修飾。代碼形式如下:參見(jiàn)教材P233非靜態(tài)內(nèi)部類不可擁有靜態(tài)成員,靜態(tài)內(nèi)部類才可擁有靜態(tài)成員。88.1.2 靜態(tài)內(nèi)部類【例8.1】StaticOuter.java。代碼如下:參見(jiàn)教材P233在代碼所在區(qū)域右擊,在彈出的快捷菜單中選擇Run As Java Application命令,控制臺(tái)的輸出結(jié)果如圖8.4所示。靜態(tài)內(nèi)部類的對(duì)象可以由OuterClass.InnerClass in = new OuterClass.InnerClass()生成,不需要通過(guò)生成外部類對(duì)象來(lái)生成,即靜態(tài)內(nèi)部類的對(duì)象可以獨(dú)立存在,不需

6、要依附于外部類對(duì)象。這樣實(shí)際上使靜態(tài)內(nèi)部類成為一個(gè)頂級(jí)類。98.1.3 局部?jī)?nèi)部類局部?jī)?nèi)部類也叫方法內(nèi)部類,即在方法內(nèi)部定義的內(nèi)部類。局部?jī)?nèi)部類的代碼形式如下:public class Outer6 private String address;public void display() /方法class Inner6 /局部?jī)?nèi)部類 108.1.3 局部?jī)?nèi)部類局部?jī)?nèi)部類有如下性質(zhì)。(1)在局部?jī)?nèi)部類中,如果要訪問(wèn)外部類的局部變量,則此變量必須是final修飾的,否則不能訪問(wèn)。(2)與非靜態(tài)成員內(nèi)部類類似,內(nèi)部類的實(shí)例化必須先實(shí)例化外部類。118.1.4 匿名內(nèi)部類匿名內(nèi)部類就是沒(méi)有名字的內(nèi)部類。正因?yàn)樗鼪](méi)有名字,所以匿名內(nèi)部類是沒(méi)有構(gòu)造器的。在后面講到Swing應(yīng)用的時(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論