内部类的分类及其定义
一、成員內(nèi)部類
代碼:
1、Inner類定義在Outer類的內(nèi)部,相當(dāng)于Outer類的成員變量的位置,Inner類可以使用任意訪問(wèn)修飾符,如:public、private、protected等。
2、Inner類中定義的test()方法可以訪問(wèn)Outer類中的數(shù)據(jù),不受訪問(wèn)控制符的影響。
3、 定義了成員內(nèi)部類后,必須使用外部類對(duì)象來(lái)創(chuàng)建內(nèi)部類對(duì)象,而不能直接去 new 一個(gè)內(nèi)部類對(duì)象,即:內(nèi)部類 對(duì)象名 = 外部類對(duì)象.new 內(nèi)部類( );如創(chuàng)建Inner的內(nèi)部類對(duì)象:要先創(chuàng)建外部類對(duì)象:Outer o = new outer(); 創(chuàng)建內(nèi)部類:Inner i = o.new Inner();訪問(wèn)Inner中的test()方法:i.test();
4、如果外部類和內(nèi)部類具有相同的成員變量或方法,內(nèi)部類可以直接訪問(wèn)內(nèi)部類的成員變量或方法,但如果內(nèi)部類訪問(wèn)外部類的成員變量或者方法時(shí),需要使用this關(guān)鍵字
二、靜態(tài)內(nèi)部類
靜態(tài)內(nèi)部類就是用static修飾的內(nèi)部類
1、靜態(tài)內(nèi)部類不能直接訪問(wèn)外部類的非靜態(tài)成員,但,可以通過(guò)new 外部類().成員的方式訪問(wèn);
2、如果外部類的靜態(tài)成員與內(nèi)部類的靜態(tài)成員相同, 可以通過(guò)"類名.靜態(tài)成員"來(lái)訪問(wèn)外部類的靜態(tài)成員;如果不同,可以直接調(diào)用外部類的靜態(tài)成員名。
三、局部?jī)?nèi)部類
為什么局部?jī)?nèi)部類訪問(wèn)局部變量必須加final修飾呢?
因?yàn)榫植孔兞渴请S著方法的調(diào)用而調(diào)用,使用完畢就消失,而堆內(nèi)存的數(shù)據(jù)并不會(huì)立即消失。
所以,堆內(nèi)存還是用該變量,而該變量已經(jīng)沒(méi)有了。為了讓該值還存在,就加final修飾。
原因是,當(dāng)我們使用final修飾變量后,堆內(nèi)存直接存儲(chǔ)的是值,而不是變量名。
四、匿名內(nèi)部類
本質(zhì):其實(shí)是繼承該類或者實(shí)現(xiàn)接口的子類匿名對(duì)象
總結(jié)
以上是生活随笔為你收集整理的内部类的分类及其定义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java怎么不增加临时变量交换值
- 下一篇: java里的局部变量为什么不能加stat