亚洲天堂一级片-亚洲天堂三区-亚洲天堂久久精品成人-亚洲天堂毛片-久久国产欧美日韩高清专区-久久国产欧美日韩精品免费

北大青鳥:Java內(nèi)部類使用的建議(下)

本篇文章由北京北大青鳥學(xué)校學(xué)術(shù)部老師提供:

相關(guān)內(nèi)容:Java內(nèi)部類使用的建議(上)

成員內(nèi)部類中成員方法與成員變量的私有性

作為成員內(nèi)部類,可以隨意引用外部類中的成員變量與成員方法。那么在成員內(nèi)部類中定義的成員變量,外部類是否也可以隨意訪問呢?答案是否定的。內(nèi)部類可以訪問它外部類的成員,但是內(nèi)部類的成員(如成員變量或者成員方法)只有在內(nèi)部類的范圍之內(nèi)是可知的,不能夠被外部類直接引用。如現(xiàn)在在外部類中定義了一個(gè)變量i,在內(nèi)部類中定義了另一個(gè)變量ii.此時(shí)在成員內(nèi)部類中,可以直接引用這個(gè)外部類中的變量i,也可以對(duì)其直接進(jìn)行賦值,如i=5等等。但是在外部類中,則不能夠直接引用內(nèi)部類中的成員變量。如在外部類中,利用ii=5的賦值語句改變這個(gè)變量的值,就屬于語法錯(cuò)誤,在編譯的時(shí)候就會(huì)出現(xiàn)錯(cuò)誤。如果外部類真的要引用內(nèi)部類的成員,那也不是不可以。只是不能夠進(jìn)行直接的引用,而是要使用內(nèi)部類對(duì)象引用的方法才能夠調(diào)用內(nèi)部類的成員變量。這一點(diǎn)程序開發(fā)人員需要切記。成員內(nèi)部類與外部類相互訪問彼此的成員方法限制是不同的。特別需要注意的是,如果在外部類和非靜態(tài)方法之外實(shí)例化內(nèi)部對(duì)象,則需要使用外部類。內(nèi)部類的形式來制定這個(gè)對(duì)象的類型。這非常的麻煩。為此要盡量避免在外部類和非靜態(tài)方法之外實(shí)例化內(nèi)部類對(duì)象。再者,內(nèi)部類對(duì)象會(huì)依賴于外部類對(duì)象,除非已經(jīng)存在一個(gè)外部類對(duì)象,否則類中不會(huì)出現(xiàn)內(nèi)部類對(duì)象。簡(jiǎn)單的說,內(nèi)部類對(duì)象與外部類對(duì)象之間的關(guān)系非常的緊密。有時(shí)候即像一對(duì)父子(成員內(nèi)部類可以隨意使用外部類的成員),有時(shí)候又像是陌生人(外部類不能夠直接使用內(nèi)部類中的成員)。作為一個(gè)出現(xiàn)的程序開發(fā)人員,必須要深入了解外部類對(duì)象與內(nèi)部類對(duì)象的關(guān)系。因?yàn)樵趯?shí)際工作中,在外部類中定義成員內(nèi)部類還是很常見的。只有了解他們彼此之間的關(guān)系,在編寫應(yīng)用程序中,才可以把控好他們。(北京北大青鳥學(xué)校)

使用this關(guān)鍵字獲取內(nèi)部類與外部類對(duì)象的引用

在外部類和成員內(nèi)部類中,都可以定義變量。成員內(nèi)部類可以隨意訪問外部類中的變量,而外部類不能夠直接訪問內(nèi)部類中的變量,只有通過使用內(nèi)部類對(duì)象來引用內(nèi)部類的成員變量。不過需要注意的是,在外部類中定義的變量與內(nèi)部類中定義的變量名字可以相同。也就是說,在外部類中可以定義一個(gè)變量i,在內(nèi)部類中也可以定義一個(gè)變量i.此時(shí)新的問題就出來了。由于在內(nèi)部類中可以隨意訪問外部類中成員方法與成員變量。但是此時(shí)成員內(nèi)部類與外部類的變量名相同,那么如果要在內(nèi)部類使用這個(gè)變量i,編譯器怎么知道現(xiàn)在需要調(diào)用外部類的變量i,還是內(nèi)部類的變量i呢?

在實(shí)際工作中,應(yīng)該盡量避免這種情況。即在定義變量名字的時(shí)候,Java內(nèi)部類中的變量名字盡量不要與外部類中的變量名字相同。但是如果真的發(fā)生這種情況的話,Java編譯器還是有手段可以解決這個(gè)變量名字的沖突問題。如果在類中的成員內(nèi)部類中遇到成員變量名字與外部類中的成員變量名字相同,則可以通過使用this關(guān)鍵字來加以區(qū)別。如現(xiàn)在有一個(gè)類名字叫做student.而在這個(gè)類中又創(chuàng)建了一個(gè)成員內(nèi)部類,名字叫做age.現(xiàn)在在這兩個(gè)類中各自定義了一個(gè)成員變量i,用來做循環(huán)之用。此時(shí)如果在成員內(nèi)部類中調(diào)用這個(gè)變量,該如何進(jìn)行區(qū)分呢?通常情況下,如果使用this.i 的方式來調(diào)用變量,則表示這個(gè)變量是成員內(nèi)部類中定義的變量。而通過使用student.this.i的形式調(diào)用變量時(shí)表示此時(shí)引用的是外部類的成員變量。也就是說,如果內(nèi)部類中引用外部類中同名的成員,需要通過外部類迷名字。this.外部類成員名字的方式加以引用。而且,在引用成員內(nèi)部類自己的定義的成員時(shí)也需要使用this關(guān)鍵字,以加以區(qū)別。顯然這非常的麻煩。為此筆者仍然要強(qiáng)調(diào)一遍,除非有非常特殊的必要,否則的話要盡量避兩外部類與成員內(nèi)部類中成員變量或者成員方法采用相同的名字。否則的話,會(huì)給后續(xù)的引用帶來很大的麻煩。(北京北大青鳥學(xué)校)

從以上的總結(jié)中可以看出,成員內(nèi)部類與外部類之間的關(guān)系確實(shí)很復(fù)雜。作為一個(gè)Java程序開發(fā)人員,必須要了解內(nèi)部類與外部類成員相互之間引用的準(zhǔn)則、內(nèi)部類對(duì)象與外部類對(duì)象的關(guān)系。在編寫代碼的時(shí)候,盡量避免內(nèi)部類與外部類中成員變量與成員方法的命名沖突。如果真的發(fā)生重名的話,要學(xué)會(huì)利用this關(guān)鍵字來消除這個(gè)沖突。筆者上面談的一些注意實(shí)現(xiàn)也是一些比較抽象的內(nèi)容,需要開發(fā)人員在實(shí)際工作中去領(lǐng)悟。 (北京北大青鳥學(xué)校)

北大青鳥網(wǎng)上報(bào)名
北大青鳥招生簡(jiǎn)章
主站蜘蛛池模板: 日韩精品中文字幕视频一区 | 国产成人丝袜视频在线视频 | 最新国产美女一区二区三区 | 韩国视频一区 | 萝控精品福利视频一区 | 波多野结衣一级片 | 国产欧美视频在线观看 | 在线观看日本免费视频大片一区 | 欧美大尺度免费一级特黄 | 免费区欧美一级毛片 | 亚洲精品亚洲人成在线 | 日本免费一二区视频 | 美女美女大片黄a大片 | 精品a在线观看 | 国产精品秒播无毒不卡 | 中国美女隐私无遮挡免费视频 | 精品久久成人免费第三区 | 在线a毛片免费视频观看 | 亚洲日本欧美在线 | 亚洲韩国日本欧美一区二区三区 | 一区二区三区影视 | 亚洲成网站 | 欧美成人免费一级人片 | 99久久九九 | 蜜桃日本一道无卡不码高清 | 91热久久免费精品99 | 欧美性猛交xxxxx按摩国内 | 美女国产在线观看免费观看 | 成人黄网大全在线观看 | 免费人成黄页网站在线观看 | 色a在线| 国产高清一区二区三区四区 | 国产色视频一区二区三区 | 韩国porno xxxx | 91色视| 全部在线播放免费毛片 | a毛片在线还看免费网站 | 成人午夜网站 | 免费永久在线观看黄网 | 日本韩国欧美在线观看 | 2020国产微拍精品一区二区 |