大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java靜態內部類和內部類的區別

Java靜態內部類和內部類的區別

更新時間:2020-05-09 15:48:25 來源:動力節點 瀏覽3757次


    下面說一說內部類(InnerClass)和靜態內部類(StaticNestedClass)的區別:


    定義在一個類內部的類叫內部類,包含內部類的類稱為外部類。內部類可以聲明public、protected、private等訪問限制,可以聲明為abstract的供其他內部類或外部類繼承與擴展,或者聲明為static、final的,也可以實現特定的接口。外部類按常規的類訪問方式使用內部類,唯一的差別是外部類可以訪問內部類的所有方法與屬性,包括私有方法與屬性。


    創建實例


    內部類創建實例


    OutClass.InnerClassobj=outClassInstance.newInnerClass();//注意是外部類實例.new,內部類


    靜態內部類創建實例


    AAA.StaticInnerin=newAAA.StaticInner();//注意是外部類本身,靜態內部類


    內部類訪問外部類


    內部類中的this與其他類一樣是指的本身。創建內部類對象時,它會與創造它的外圍對象有了某種聯系,于是能訪問外圍類的所有成員,不需任何特殊條件,可理解為內部類鏈接到外部類。用外部類創建內部類對象時,此內部類對象會秘密的捕獲一個指向外部類的引用,于是,可以通過這個引用來訪問外圍類的成員。


    外部類訪問內部類


    內部類類似外部類的屬性,因此訪問內部類對象時總是需要一個創建好的外部類對象。內部類對象通過‘外部類名.this.xxx’的形式訪問外部類的屬性與方法。如:System.out.println(“PrintininnerOuter.index=”+pouter.this.index);System.out.println(“PrintininnerInner.index=”+this.index);


    內部類向上轉型


    內部類也可以和普通類一樣擁有向上轉型的特性。將內部類向上轉型為基類型,尤其是接口時,內部類就有了用武之地。如果內部類是private的,只可以被它的外部類問,從而完全隱藏實現的細節。


    方法內的類


    方法內創建的類(注意方法中也能定義類),不能加訪問修飾符。另外,方法內部的類也不是在調用方法時才會創建的,它們一樣也被事先編譯了。


    靜態內部類


    定義靜態內部類:在定義內部類的時候,可以在其前面加上一個權限修飾符static。此時這個內部類就變為了靜態內部類。


    通常稱為嵌套類,當內部類是static時,意味著:


    [1]要創建嵌套類的對象,并不需要其外圍類的對象;


    [2]不能從嵌套類的對象中訪問非靜態的外圍類對象(不能夠從靜態內部類的對象中訪問外部類的非靜態成員);


    嵌套類與普通的內部類還有一個區別:普通內部類的字段與方法,只能放在類的外部層次上,所以普通的內部類不能有static數據和static字段,也不能包含嵌套類。但是在嵌套類里可以包含所有這些東西。也就是說,在非靜態內部類中不可以聲明靜態成員,只有將某個內部類修飾為靜態類,然后才能夠在這個類中定義靜態的成員變量與成員方法。


    另外,在創建靜態內部類時不需要將靜態內部類的實例綁定在外部類的實例上。普通非靜態內部類的對象是依附在外部類對象之中的,要在一個外部類中定義一個靜態的內部類,不需要利用關鍵字new來創建內部類的實例。靜態類和方法只屬于類本身,并不屬于該類的對象,更不屬于其他外部類的對象。


    內部類標識符


    每個類會產生一個.class文件,文件名即為類名。同樣,內部類也會產生這么一個.class文件,但是它的名稱卻不是內部類的類名,而是有著嚴格的限制:外圍類的名字,加上$,再加上內部類名字。


    為何要用內部類?


    內部類一般只為其外部類使用;


    內部類提供了某種進入外部類的窗戶;


    也是最吸引人的原因,每個內部類都能獨立地繼承一個類,而無論外部類是否已經繼承了某個類。因此,內部類使多重繼承的解決方案變得更加完整。


    加深印象,參考一下:


Java靜態內部類和內部類的區別

Java靜態內部類和內部類的區別


    總結


    1.靜態內部類可以有靜態成員(方法,屬性),而非靜態內部類則不能有靜態成員(方法,屬性)。


    2.靜態內部類只能夠訪問外部類的靜態成員,而非靜態內部類則可以訪問外部類的所有成員(方法,屬性)。


    3.實例化一個非靜態的內部類的方法:


    a.先生成一個外部類對象實例OutClassTestoc1=newOutClassTest();


    b.通過外部類的對象實例生成內部類對象OutClassTest.InnerClassno_static_inner=oc1.newInnerClass();


    4.實例化一個靜態內部類的方法:


    a.不依賴于外部類的實例,直接實例化內部類對象OutClassTest.InnerStaticClassinner=newOutClassTest.InnerStaticClass();


    b.調用內部靜態類的方法或靜態變量,通過類名直接調用OutClassTest.InnerStaticClass.static_valueOutClassTest.InnerStaticClass.getMessage()


Java靜態內部類和內部類的區別


 以上就是動力節點java培訓機構的小編針對“Java靜態內部類和內部類的區別”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 女bbbbxxxx另类亚洲 | 天天干天天操天天爽 | 欧美 亚洲 另类 热图 | 色老久久精品偷偷鲁一区 | 理论片我不卡在线观看 | 成人性色生活片免费网 | 操美女免费看 | 国产精品久久新婚兰兰 | 国产片网址 | 一区二区网站 | 日本在线不卡免 | 黄色成人免费网站 | 九九这里只有精品视频 | 亚洲成在人天堂一区二区 | 国产成人精品一区二区三区 | 五月天婷婷免费视频观看 | 天天毛片 | 亚洲高清免费 | 精品国产一区二区三区香蕉沈先生 | 狠狠澡夜夜澡人人爽 | 色偷偷亚洲女人天堂观看欧 | 嫩草影院麻豆久久视频 | 欧美成人免费观看国产 | 中文字幕视频在线 | 在线观看中文字幕第一页 | 免费尤物视频 | 最新国产午夜精品视频成人 | 国产色婷婷精品综合在线 | 91精品国产麻豆国产自产在线 | 毛片毛片毛片毛片毛片 | 久久亚洲精品中文字幕第一区 | 亚洲在线成人 | 成人国产亚洲欧美成人综合网 | 久久久久久久影院 | 2019精品国产品免费观看 | 日本综合在线观看 | 久久精品国产欧美成人 | 色悠综合| 大乳孕妇一级毛片 | 亚洲欧美强伦一区二区另类 | 91视频你懂的 |