java中常见的几种内部类,你会几个?(未完)
點擊上方藍色關注我們!
大家好,我是雄雄,今天給大家介紹的是java中的幾種內部類。
java中常見的幾個內部類,你會幾個?我會四個!
在看每個新知識點時,我們不禁有這樣或者那樣的疑問,比如它是什么?怎么用?帶著這些疑問我們繼續往下看:
它(內部類),是什么?
內部類,顧名思義就是內部的類,什么的內部?我們都知道java中基本的操作單元是類,那么在類的內部還有一個類(也可以說是類中嵌套類),這樣的結構,我們就可以稱這種(類中的類)為內部類。
接下來我們可以看一個簡單的內部類案例,代碼如下:
package org.test;//外部類 public?class?People?{//外部類的方法public?void?show(String name){System.out.println("你好"+name);}//內部類class?Peo?{//內部類的方法public?void?show(String name){System.out.println("你好"+name);}}//外部類的main方法public?static?void?main(String[] args) {//創建內部類的對象Peo p = new?People().new Peo();p.show("張三");System.out.println("---------------");//調用外部類的new?People().show("李四");}}分析一下代碼,我們先寫了一個外部類People,在外部類中寫一個show方法,并且需要一個String類型的參數,緊接著有在該類中重新聲明了一個名為Peo的類(內部類),該內部類中也寫了一個show方法,且需要一個Stirng類型的參數。
然后我們在外部類的main方法中,分別調用內部類與外部類的方法,運行結果為:
可見,內部類的用法并不難,下面我們來深入的看看。
java中的內部類只是java編譯器的概念,對于java的虛擬機而言,它是沒有java內部類的概念的,也就是說java中的內部類最后也會被編譯成一個獨立的class文件。
Java中的內部類可以分為四種:
靜態內部類
成員內部類
方法內部類
匿名內部類
它(內部類)怎么用?
1.靜態內部類:
靜態內部類的聲明和靜態方法聲明類似,就是將關鍵詞改成了class,如下:
package org.test;//外部類 public?class?People?{static?int?num;//內部類static?class?Peo?{private?static?String name ;//內部類的方法public?static?void?show(){System.out.println("數字是:"+num);System.out.println("歡迎關注:"+name+",嘿嘿!");}}//main方法public?static?void?main(String[] args) {new?People().num = 888;Peo.name = "雄雄的小課堂";Peo.show();}}分析代碼:
我們在外部類People中聲明了一個int類型的num,在內部類中聲明了name屬性和show方法。然后在主體main方法中調用,其結果為:
總結: 靜態內部類可以直接訪問外部的靜態屬性和方法,但是不可訪問外部類的實例屬性和方法。
2.成員內部類:
將靜態內部類的static關鍵詞去掉就成了成員內部類,代碼如下:
package org.test;//外部類 public?class?People?{private?static?int?age ;String address ="山東濟南";//內部類class?Peo?{private??String name ;//內部類的方法public??void?show(){System.out.println("年齡是:"+age);System.out.println("地址是:"+address);System.out.println("名稱是:"+name+",嘿嘿!");}}//main方法public?static?void?main(String[] args) {Peo p = new?People().new Peo();People.age = 18;p.name = "雄雄的小課堂";p.show();}}運行結果為:
顯而易見,成員內部類中除了可以調用外部類中的私有的靜態屬性外,還可以調用外部類的實例屬性。
下面還有一個問題,即:當外部類中的屬性與內部類中的屬性重名時,在內部類中如何區分使用該屬性呢,代碼如下:
//外部類 public?class?People?{//年齡private?static?int?age ;String address ="山東濟南";//內部類class?Peo?{//姓名private??String name ;//年齡private?int?age = 28; //內部類和外部類重名的屬性//內部類的方法public??void?show(){System.out.println("年齡是:"+age);System.out.println("年齡是:"+age);System.out.println("地址是:"+address);System.out.println("名稱是:"+name+",嘿嘿!");}}//main方法public?static?void?main(String[] args) {Peo p = new?People().new Peo();People.age = 18;p.name = "雄雄的小課堂";p.show();} }大家猜想一下age的值多少?18?28?還是一個18一個28?運行結果為:
造成這樣的結果原因是什么呢?從代碼中不難看的出來,age結果的值是內部類的值,并非外部類的值,那么如果我想在內部類中使用外部類的屬性,我應該如何使用呢?
很簡單,我們只需在該屬性的前面加上“類名.this.屬性名”即可,案例中我們就可以這樣寫:
運行結果:
今天就先分享到這里,剩余的“方法內部類”和“匿名內部類”我們明天接著講。
支持作者
贊賞就不用啦,生活都不易,右下角的“在看/贊”點一下,如果感覺文章不錯,記得分享到朋友圈讓更多人知道!
粉絲群
▲每天都會有不定額的紅包發放,了解公眾號文章、抽獎最新資訊。
往期推薦
java中你知道的這四種代碼塊嗎?
切記!構造函數里面別一定不要初始化其他類,踩過坑的都知道
淺談我的讀書史
淺談我的讀書史(2)
總結
以上是生活随笔為你收集整理的java中常见的几种内部类,你会几个?(未完)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iPhone 15 Pro Max充电测
- 下一篇: AI 大模型数据标注“民工”月入不过 5