久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【Java】基礎(chǔ)20:比較難懂的內(nèi)部類

 劉小愛v 2020-05-04

據(jù)說這是自學(xué)Java的一大關(guān)卡,,比較難理解,。

什么叫內(nèi)部類呢?

顧名思義,,在類的里面還有一個(gè)類。

其中在里面的那個(gè)類就是內(nèi)部類,,在外面的那個(gè)類就是外部類,。

我們知道一個(gè)類,有成員變量和成員方法,。

若是內(nèi)部類在成員變量處,,那它就是成員內(nèi)部類;

若是內(nèi)部類在成員方法內(nèi),,那它就是局部?jī)?nèi)部類,。

一、成員內(nèi)部類

代碼如下:

①內(nèi)部類可以直接訪問外部類的成員變量,,包括私有成員變量,。

格式為:外部類名.this.外部類成員變量(注意是外部類類名+this)。

②內(nèi)部類訪問本類的成員變量,。

格式為:this.內(nèi)部類成員變量,。

不管是內(nèi)部類還是外部類,其成員的訪問都是基于對(duì)象訪問的

內(nèi)部類對(duì)象的創(chuàng)建有兩種格式:

先創(chuàng)建外部類對(duì)象,,再創(chuàng)建內(nèi)部類對(duì)象,。

注意:內(nèi)部類仍然是一個(gè)獨(dú)立的類,在編譯之后會(huì)內(nèi)部類會(huì)被編譯成獨(dú)立的.class文件,,但是前面冠以外部類的類名和$符號(hào) ,。比如:OuterClass$InterClass.class  

二、局部?jī)?nèi)部類

內(nèi)部類也可以定義在成員方法中,,這種情況叫局部?jī)?nèi)部類,。

內(nèi)部類只能在方法中或者某個(gè)作用域內(nèi)訪問。

其他類是無法訪問局部?jī)?nèi)部類的,。

成員內(nèi)部類,,在其他類中是可以訪問的,上面也說了兩種創(chuàng)建對(duì)象的格式,,但是在局部?jī)?nèi)部類中是不可以的,。

①直接變量名是指內(nèi)部類局部變量;

②this.變量名是指內(nèi)部類成員變量,;

③外部類名.this.變量名是指外部類成員變量

④訪問外部類局部變量,,其變量得是final類型,不然會(huì)報(bào)錯(cuò),。

思考有兩個(gè)問題:

1.如果外部類局部變量和內(nèi)部類局部變量重名,,如何訪問外部類局部變量?

這個(gè)問題困擾了我蠻久的,我在網(wǎng)上查詢了很久,,最終得出的結(jié)論是:如果重名,,沒法訪問外部類局部變量,因?yàn)榫徒瓌t,,外部類局部變量會(huì)被內(nèi)部類局部變量覆蓋掉,。

2.為什么外部類局部變量得是final類型?

在成員內(nèi)部類中就說過,,雖然內(nèi)部類是在外部類里面,,但是外部類和內(nèi)部類是會(huì)生成兩個(gè)class文件的,也就是說它們是各自存儲(chǔ)各自的數(shù)據(jù),。

如果不是final類型,,會(huì)出現(xiàn)外部類局部變量改變了,但是內(nèi)部類存儲(chǔ)的還是以前的那個(gè)數(shù)據(jù)的情況,。

三,、匿名內(nèi)部類

除了成員內(nèi)部類、局部?jī)?nèi)部類,,還有一個(gè)匿名內(nèi)部類,。

什么叫匿名內(nèi)部類呢?

按照字面意思的理解,,就是沒有名稱的內(nèi)部類,。

現(xiàn)在有一個(gè)需求,控制臺(tái)輸出每個(gè)人在唱什么歌,。

最常規(guī)簡(jiǎn)單的方法如何做,?看如下代碼:

①創(chuàng)建一個(gè)Sing接口;

②定義一個(gè)抽象方法sing(),;

③創(chuàng)建一個(gè)類People實(shí)現(xiàn)Sing接口,;

④重寫方法Sing();

⑤在測(cè)試類中創(chuàng)建People對(duì)象,;

⑥用對(duì)象調(diào)用方法sing(),。

打印出來結(jié)果就是:劉小愛在唱《七里香》。

那么問題來了,,如果這個(gè)對(duì)象只需要使用一次,,創(chuàng)建了一個(gè)子類People,結(jié)果只使用了一次,,這個(gè)過程又這么的繁瑣,。

有沒有更簡(jiǎn)便的方法呢?

這就需要匿名內(nèi)部類了,。代碼如下:

不需要?jiǎng)?chuàng)建一個(gè)People類,,然后實(shí)現(xiàn)接口,,最后建立對(duì)象,調(diào)用方法,。

①匿名內(nèi)部類就相當(dāng)于,在常規(guī)方法中的People對(duì)象,,但是因?yàn)槭褂媚涿麅?nèi)部類的話不需要建立子類,,故沒有子類名,便直接用父接口命名代替,,這也是格式:new Sing(){}的由來,。

②調(diào)用自己重寫后的方法。

匿名內(nèi)部類在父類是抽象類的時(shí)候也可以使用,,和接口時(shí)的格式是一樣的,。

總結(jié):

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多